从 docker 容器到主机的 Curl 请求超时

问题描述 投票:0回答:2

我遇到了 docker 的问题,我认为这是由于我对 docker 网络的了解存在差距。

我有一个运行 nginx 和 php 的 docker 镜像。必要的端口已暴露。这是我用来运行图像的简化命令。

docker run --name php-app -p 80:80 php-app

问题在于,对于安装设置,php 应用程序使用主机公共 IP 卷曲到自身。

举个例子,

curl http://105.15.25.120/phpsetup.php?setup

这个 IP 似乎无法从容器内部访问,因为卷曲超时了

curl -vvv 105.15.25.120
About to connect() to 105.15.25.120 port 80 (#0)
Trying 105.15.25.120...
Connection timed out
Failed connect to 105.15.25.120:80; Connection timed out
Closing connection 0
curl: (7) Failed connect to 105.15.25.120:80; Connection timed out

我可以从容器内部成功卷曲到其他 IP,但不能卷曲到主机的 IP。

在主机上使用curl 效果很好,并且不会导致任何奇怪的行为。

为了简单起见和测试,我使用官方 nginx 映像重现了该行为,以帮助得出结论,这不是我自己的映像的问题。

docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -p 80:80

根据我的研究,这似乎是一个路由问题?没有把握。

curl nginx docker docker-network
2个回答
4
投票

容器不应卷曲主机。它应该自行卷曲,因为它承载着您想要卷曲的内容。

curl http://127.0.0.1/phpsetup.php?setup


0
投票

只需确保您的应用程序正在侦听环回地址

0.0.0.0
而不是
localhost
127.0.0.1

就我而言,它由两个容器组成:golang http app 和 mongodb。虽然我能够从 mongodb 容器 ping 我的应用程序,但无法卷曲它。

礼貌https://www.reddit.com/r/docker/comments/16o8wwv/comment/k1jblv9/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

© www.soinside.com 2019 - 2024. All rights reserved.