docker组成容器端口不工作

我正在运行一个由docker-container启动的容器,如下所示:

puppetboard: build: ./images/puppetboard image: puppet/puppetboard ports: - 5000:5000 links: - puppetdb:puppetdb 

它成功地build立,当我运行docker ps我可以看到:

 0.0.0.0:5000->5000/tcp 

我甚至可以使用docker exec进入容器,并使用curl localhost:5000返回一个html页面。

我仔细检查主机是否可以在127.0.0.2 (dockernetworking)上看到端口5000,使用nmap 127.0.0.2 ,端口可用: 5000/tcp open upnp

然而,当我在主机上的浏览器中访问127.0.0.2:5000 ,我的网站不可用。 我怎样才能debugging这个networking问题?

curl 127.0.0.2:5000结果curl 127.0.0.2:5000 curl 127.0.0.1:5000是: curl: (56) Recv failure: Connection reset by peer

正如我们在这个房间里讨论的,你必须确保集装箱化的应用程序监听容器内的所有接口。 在傀儡委员会的情况下,configuration看起来像:

 DEV_LISTEN_HOST = '0.0.0.0' 

用0.0.0.0来表示“所有接口”

127.0.0.x是一个回送地址。 要将容器中的端口发布到主机,您需要监听容器中的所有接口。 所以你需要确保容器内的应用程序被configuration为侦听0.0.0.0:5000(这与docker撰写文件中发布端口的选项不同)。