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

时间:2017-03-21 22:18:40

标签: curl nginx docker docker-networking

我遇到了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,而不是主机。

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

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

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

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

1 个答案:

答案 0 :(得分:3)

容器不应卷曲主机。它应该卷曲自己,因为它托管你想要卷曲的内容。

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