Docker-compose容器端口无法正常工作

时间:2017-05-15 14:01:38

标签: docker docker-compose

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

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

它成功构建,当我运行docker ps时,我可以看到:

0.0.0.0:5000->5000/tcp

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

我仔细检查主机是否可以通过nmap 127.0.0.2在127.0.0.2 (docker network)上看到端口5000,并且端口可用:5000/tcp open upnp

然而,当我在主机上的浏览器中访问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

2 个答案:

答案 0 :(得分:5)

127.0.0.x是一个环回地址。要将容器中的端口发布到主机,您需要侦听容器中的所有接口。因此,您需要确保容器内的应用程序配置为侦听0.0.0.0:5000(这与在docker compose文件中发布端口的选项不同。)

答案 1 :(得分:3)

正如我们在此room中讨论的那样,您必须确保容器化应用程序侦听容器内的所有接口。在puppet board的情况下,config看起来像:

DEV_LISTEN_HOST = '0.0.0.0' 

0.0.0.0用于说"所有接口"