Docker 网络 - host 模式
容器与主机、容器与容器之间是互相隔离的。同时,我们可以通过配置 docker 网络,为容器创建完全独立的网络命名空间,或者使容器共享主机或者其他容器的网络命名空间,以应对不同场景的需要。
这里有4 种常用的单宿主机网络模式:
- bridge 模式;
- host 模式;
- container 模式;
- none 模式。
本节将介绍网络模式中的 host 模式。
1. host 模式
host 模式下启动的容器,网络不再与宿主机隔离,访问容器服务可以直接使用访问宿主机对应的网络端口,且不需要端口转发。
网络拓扑图如下:
host 拓扑
以 host 模式启动 nginx 的容器 h0:
docker run -d -t --network host --name h0 nginx
启动成功后,在浏览器输入任意的本机地址,都可以打开 nginx 的默认页面,访问宿主机 80 端口就是访问容器的 80 端口,它们是一致的。
以 host 模式启动 nginx 的容器 h1:
docker run -d -t --network host --name h1 nginx
使用 docker ps -a
命令查看所有容器,发现 h1 容器没有运行:
使用 docker logs h1
查看容器 h1 的日志,发现,由于宿主机 80 端口已经被 h0 容器的服务占用,使得 h1 无法获取到 此端口,导致无法正常启动。
我们在学习过程中,不再使用的容器记得删除掉,释放资源和空间
docker rm -f h0 h1
2. 小结
host 模式下的容器与宿主机共享同一个网络环境,容器可以使用宿主机的网卡和外界的通信,不需要转发拆包,性能好。但 host 模式也有非常严重的缺点: 容器没有隔离的网络,会与其他服务竞争宿主机的网络,导致宿主机网络状态不可控,因此无法用在生产环境 。
本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。