『中级篇』容器网络之host和none(29)
2018-09-12 10:12:14
李明
  • 访问次数: 83
  • 注册日期: 2018-07-09
  • 最后登录: 2018-09-19

原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『中级篇』容器网络之host和none(29)

前几节主要说的bridge network,在实际中bridge确实运用比较广泛,之前通过docker network ls 里面不光有bridge,还有host 和none,这次就说说这2个

查看network ls里面的网络类型
sudo docker network ls#删除之前自定义的bridagesudo docker network rm mybridge
sudo docker network ls

1240

  • 创建一个network none的容器

sudo docker run -d --name test5 --network none busybox /bin/sh -c "while true;do sleep 3600;done"sudo docker network inspect none

1240

sudo docker exec -it test5 /bin/sh
ip a

发现一个问题,test5它没有回管口,只有单独的一个lo口,这种none的也就自己通过exec的方式访问,其实还真有应用场景。封闭意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用 none 网络。比如某个容器的唯一用途是生成密码,就可以放到 none 网络中避免密码被窃取。

1240

  • 创建一个network host的容器

sudo docker stop test5
sudo docker rm test5
sudo docker run -d --name test5 --network host busybox /bin/sh -c "while true;do sleep 3600;done"#这个命令之后回发现跟none一样也是ipv4 和ipv6 都是"",没有对应的ip地址sudo docker network inspect host

image.png

image.png

1240

#进入到test5里面去看看效果sudo docker exec -it test5 /bin/sh#发现一个问题没有,在这个test5 里面的网络结构和外边的linux主机的网络结构是一样的ip a

1240

1240

直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了。Docker host 的另一个用途是让容器可以直接配置 host 网路。比如某些跨 host 的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables,大家将会在后面进阶技术章节看到。

PS : none 和host的网络基本也讲解完成了,他们各有利弊,其实用到最多的还是bridage,了解他们的之间的区别。

image