当 docker run 命令中提到 --net=host 时,Docker 容器不会公开端口

当 docker run 命令中提到 --net=host 时,Docker 容器不会公开端口

我在 CentOS docker 主机上有一个 CentOS docker 容器。当我使用此命令运行 docker 映像时

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指令曝光 8777但当“--net=host”中提到时没有用码头运行命令。

答案1

如果您使用--net=host容器共享主机的网络堆栈,并且主机的所有接口都可供容器使用, (根据 docker 的运行参考

如果您已经共享所有内容,则不需要显式地将 8777 映射到 8777。实际上实现映射会很奇怪:将 1234 映射到 8777 会让主机也监听 8777?这就是为什么您看不到分配任何端口的原因。

只需忽略--net=host并尝试在主机上连接到 8777,它将桥接到容器上的 8777。确保您的容器不知道它使用的实际 IP 地址。外界只能看到主机IP。

相关内容