Docker主机网络(host network)的原理和用法详解

如果您将主机网络模式用于容器,则该容器的网络堆栈不会与Docker主机隔离(该容器共享主机的网络命名空间),并且该容器不会请求分配自己的IP地址。 例如,如果您运行一个绑定到端口80的容器,并且使用主机联网,则该容器的应用程序可在主机IP地址的端口80上使用。

注意:假设使用主机模式网络时容器没有自己的IP地址,端口映射不会生效,并且-p--publish-P--publish-all选项将被忽略, 改为发出警告:

WARNING: Published ports are discarded when using host network mode

主机模式网络对于优化性能以及在容器需要处理大量端口的情况下很有用,因为它不需要网络地址转换(NAT),并且不会为每个端口创建“userland-proxy”。

主机网络驱动程序仅在Linux主机上工作,Docker Desktop for Mac, Docker Desktop for Windows, 或Docker EE for Windows Server不支持。

通过将--network host传递给docker service create命令,您还可以将主机网络用于swarm服务。 在这种情况下,控制通信(与管理群集和服务有关的通信)仍会通过覆盖网络发送,但是单个群集服务容器会使用Docker后台程序的主机网络和端口发送数据。 这带来了一些额外的限制。 例如,如果服务容器绑定到端口80,则在给定的群集节点上只能运行一个服务容器。

下一步