如果容器使用'host'网络驱动,意味着容器共享宿主机网络栈,双方在网络名称空间并没有隔离。例如,如果容器绑定到‘host’网络的80端口,则可通过宿主机IP加上80端口访问容器。
'host'类型网络驱动只在Linux操作系统主机上可用,不支持Mac、Windows。
从Docker 17.06开始,支持Docker Swarm中服务使用host网络,在docker container create命令创建容器时增加--network host即可。控制流量(swarm集群与服务管理流量)仍然使用overlay网络,但是单独swarm服务通过Docker守护进程使用的宿主机网络与端口号发送流量。这增加了一些额外的限制。例如,如果服务容器绑定到宿主机的80端口,显而易见的是,在这个swarm集群中的宿主机上只能运行一个实例。
如果容器服务不对外开放端口,则'host'网络不会产生其它影响。总之,在正式应用中,不应该使用host网络,严重依赖宿主机。
本文详细解析了Docker中'host'网络驱动的工作原理,指出它使容器与宿主机共享网络栈,适用于绑定宿主机端口的场景。特别强调自Docker17.06起,'host'网络可在Swarm服务中使用,但存在限制,如同一端口仅能被一个服务实例绑定。并提醒在正式环境中应避免使用,以防过度依赖宿主机。
8338

被折叠的 条评论
为什么被折叠?



