docker不暴露端口与networking主机

我试图运行一个docker容器监听端口5555,该图像是用EXPOSE 5555构build的,我正在运行如下的容器

 $ docker run -d --name controler -p 5555:5555 -v /var/run/docker.sock:/var/run/docker.sock --net=host my_image:latest 

该容器启动正常,但端口不公开,运行docker端口返回错误消息

 $ docker port controler 5555 Error: No public port '5555/tcp' published for controler 

如果我运行容器没有--net=host ,端口是公开的,我可以访问容器。

任何想法或暗示真正发生在这里的是赞赏。

注意:我在运行el capitan的mac上使用最新的docker for mac beta版本1.12.0-beta21(build:11019)

--net=host选项

此选项将容器的虚拟NIC绑定到主机物理NIC(通过完全访问本地系统服务(如D-bus))。

当使用此选项时,每个请求networking套接字的程序都将由主机从物理NIC授予。 您的服务将按照预期使用5555端口。

-p 5555:5555选项

此选项通过iptable like机制将networking套接字containter-ip:5555绑定到networking套接字host-ip:5555


换一种说法

看来,恕我直言,有点不合逻辑的使用它们两个。 如果需要将集装箱化服务发布到socket host-ip:5555那么最简洁的方法是使用-p 5555:5555选项。