我在CentOS docker主机上有一个CentOS docker容器。当我使用此命令运行docker image docker run -d --net=host -p 8777:8777 ceilometer:1.x
时,docker容器获取主机的IP,但没有为其分配端口。
如果我在没有" - net = host"的情况下运行相同的命令docker run -d -p 8777:8777 ceilometer:1.x
docker公开端口,但使用不同的IP。 docker版本是1.10.1。我希望docker容器与暴露端口的主机具有相同的IP。我也在Dockerfile
指令EXPOSE 8777
中提到过,但在" - net = host"时没有用。在docker run
命令中提到。
答案 0 :(得分:20)
docker版本是1.10.1。我希望docker容器与暴露端口的主机具有相同的ip。
当您使用--net=host
时,它告诉容器使用主机网络堆栈。因此,您无法向主机公开端口,因为 主机(就网络堆栈而言)。
docker inspect
可能不会显示公开端口,但如果您有一个应用程序在端口上侦听,它将像在主机上运行一样可用。
答案 1 :(得分:7)
这个答案让我很困惑。显然我的docker映像应该在端口8080上可以访问。但事实并非如此。然后我读了
https://docs.docker.com/network/host/
引用
主机网络驱动程序仅适用于Linux主机,而Mac的Docker,Windows的Docker或Windows Server的Docker EE不支持该主机网络驱动程序。
就像在Mac上一样,这很烦人。 docker命令应该报告错误,而不是让我认为它应该起作用。
讨论为什么不报告错误
https://github.com/docker/for-mac/issues/2716
不确定我是否相信。