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
选项。
- 为什么我不能得到由docker build创build的文件尾部的输出
- Dockerfile错误:/ bin / sh:1:[“python”,:not found
- 来自Angular4应用程序的Docker容器:“-p”:$ PATH中找不到的可执行文件
- curl语法错误:追加couchdb文件失败与“冲突”?
- 如何推动由Docker-composepipe理的Docker容器到Heroku?
- 将Docker导向本地NPM软件包时无法完成npm安装
- 如何获取由本地文件系统上的Docker容器生成的内容(最小失败示例)
- Docker:一些幽灵图片正在搞乱内存
- 是否有可能从docker镜像中删除不需要的软件包?