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

Curl request from docker container to host timeout

我遇到了 docker 的问题,我认为这是由于我对 docker 网络的了解不足所致。

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

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

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

举个例子, curl http://105.15.25.120/phpsetup.php?setup

此 IP 似乎无法从容器内部访问,因为 curl 超时

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

我可以从容器内成功地 curl 到其他 IP,只是主机的 IP 不行。

从主机使用 curl 工作正常,并且不会导致任何奇怪的行为。

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

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

根据我的研究,这似乎是路由问题?不确定。

容器不应卷曲主机。它应该自行卷曲,因为它承载了您希望卷曲的内容。

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