2016-02-05 102 views
0

无法管理多次前我做过的简单任务(我前几天更新了Docker,如果它很重要,并且有很多docker-compose的错误甚至无法实现给出一个版本):在本地运行容器并访问公开的路径。很简单,但我有一个Error 61. Connection refusedDocker:coudn't公开服务

我做什么:

  1. docker build container_name . - 在Dockerfile我都暴露80和5000
  2. docker run -d -p 80:5000 container_name
  3. 再检查一下我的docker-machine dev ip地址的端口80 - 连接拒绝了。

容器内部我有5000端口上运行的gunicorn。它工作正常。 当我登录容器时,我可以很容易curl localhost:5000。并从localhost:5000工作服务器有一个很好的回应。

所以我只需要将我的主机上的端口80映射到容器内部的5000端口,这就是cmd -p 80:5000应该做的,对吧?但它不起作用。我做错了什么?


docker version

Client: 
    Version:  1.9.1 
    API version: 1.21 
    Go version: go1.4.3 
    Git commit: a34a1d5 
    Built:  Fri Nov 20 17:56:04 UTC 2015 
    OS/Arch:  darwin/amd64 

Server: 
    Version:  1.9.1 
    API version: 1.21 
    Go version: go1.4.3 
    Git commit: a34a1d5 
    Built:  Fri Nov 20 17:56:04 UTC 2015 
    OS/Arch:  linux/amd64 

回答

3

不要听localhost0.0.0.0(或*取决于配置是怎么做的)

localhost是专门回送你的容器内 。要将地图端口映射到主机,您需要监听非回送地址。

如果您指定-p,则不需要EXPOSE,虽然这是隐含的。

+0

你说得对。 0.0.0.0的作品。谢谢。 – hsrv