2016-02-05 119 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