如果您host对容器使用网络模式,则该容器的网络堆栈不会与Docker主机隔离(该容器共享主机的网络名称空间),并且该容器不会分配自己的IP地址。例如,如果您运行绑定到端口80host 的容器并使用网络,则该容器的应用程序可在主机IP地址上的端口80上使用。
注:由于使用时容器不拥有自己的IP地址 host模式的网络,端口映射不生效,并且-p,--publish,-P,和--publish-all选项都将被忽略,产生一个警告而不是:
WARNING: Published ports are discarded when using host network mode
主机模式网络对于优化性能以及在容器需要处理大量端口的情况下很有用,因为它不需要网络地址转换(NAT),并且不会为每个端口创建“ userland-proxy”。
主机网络驱动程序仅在Linux主机上工作,而Mac的Docker桌面,Windows的Docker桌面或Windows Server的Docker EE不支持该主机网络驱动程序。
host通过传递--network host 给docker service create命令,您还可以将网络用于群集服务。在这种情况下,控制流量(与管理群集和服务有关的流量)仍会通过覆盖网络发送,但是单个群集服务容器会使用Docker守护程序的主机网络和端口发送数据。这带来了一些额外的限制。例如,如果服务容器绑定到端口80,则在给定的群集节点上只能运行一个服务容器。