Docker:没有公开服务

无法pipe理多次之前做的简单任务(前几天我更新了Docker,如果它很重要,并且docker-compose有很多错误甚至不能提供版本) :在本地运行一个容器并访问暴露的path。 很简单,但我有一个Error 61. Connection refused

我做的事:

  1. docker build container_name . – 在一个Dockerfile中,我暴露了80和5000
  2. docker run -d -p 80:5000 container_name
  3. 切断我的docker-machine dev ip端口80上的docker-machine dev ip地址 – 连接被拒绝。

在容器内部,我有一个端口5000运行gunicorn。它工作正常。 当我login到容器时,我可以很容易地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 

不要听localhost0.0.0.0 (或*取决于configuration如何)

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

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