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

我遇到了一个docker问题,我相信这是由于我在dockernetworking方面的知识存在差距。

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

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

问题是,安装设置,PHP应用程序使用主机公用IPcurl到自己。

举个例子, 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,而不是主机。

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

为了简单和testing,我已经用官方的nginx镜像重现了这个行为,以帮助得出结论,这不是我自己的形象的问题。

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

从我的研究,这似乎是一个路由问题? 不确定。

容器不应curl主机。 它应该curl自己,因为它是托pipe你想curl的内容。

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