Docker:没有公开服务
无法pipe理多次之前做的简单任务(前几天我更新了Docker,如果它很重要,并且docker-compose有很多错误甚至不能提供版本) :在本地运行一个容器并访问暴露的path。 很简单,但我有一个Error 61. Connection refused
我做的事:
-
docker build container_name .
– 在一个Dockerfile中,我暴露了80和5000 -
docker run -d -p 80:5000 container_name
- 切断我的
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
不要听localhost
听0.0.0.0
(或*
取决于configuration如何)
localhost
是专门循环回你的容器内 。 要将地图端口映射到主机,您需要监听非回送地址。
如果你指定-p
,则不需要EXPOSE
,这是隐含的。