Docker: 无法公开服务

Docker: coudn't expose a service

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

我的工作:

  1. docker build container_name . -- 在一个 Docker 文件中我公开了 80 和 5000
  2. docker run -d -p 80:5000 container_name
  3. 在端口 80 上检查我的 docker-machine dev ip 地址 -- 连接被拒绝。

在容器内,我在端口 5000 上有一个 运行ning 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

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

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

如果您指定 -p,则不需要 EXPOSE - 隐式执行。