前戏
Docker安装时会自动在host上创建三个网络,我们可用docker network ls命令查看
none网络
顾名思义,none网络就是什么都没有的网络。挂在这个网络下的容器除了lo,没有其他任何网卡。容器创建时,可以通过 –network=none指定使用none网络
这玩意儿有啥用?
其实还真有应用场景。封闭意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用none网络。比如某个容器的唯一用途是生成随机密码,就可以放到none网络中避免密码被窃取。当然大部分容器是需要网络的
host网络
连接到host网络的容器共享Docker host的网络栈,容器的网络配置与host完全一样。可以通过 –network=host指定使用host网络
在容器中可以看到所有的网卡,并且连hostname也是一样的,这样有什么好处?
直接使用Docker host的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择host网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host上已经使用的端口就不能再用了。
docker host的另一个用途是让容器可以直接配置host网路,比如某些跨host的网络解决方案,其本身也是以容器方式运行的
bridge网络
Docker安装时会创建一个命名为docker0的Linux bridge。如果不指定–network,创建的容器默认都会挂到docker0上
没有启动docker服务是不会有的docker0的
上图没有任何网络设备,创建一个容器之后
一个新的网络接口veth28c57df被挂到了docker0上,vethfab030c就是新创建容器的虚拟网卡
user-defined网络
除了none、host、bridge这三个自动创建的网络,用户也可以根据业务需要创建user-defined网络
通过bridge驱动创建类似前面默认的bridge网络
新增了一个网桥br-f43ef678aacb ,这里f43ef678aacb 正好是新建bridge网络my_net的短id。执行docker network inspect查看一下my_net的配置信息
注:这里172.18.0.0/16是Docker自动分配的IP网段
我们可以自己指定ip网段
–subnet和 –gateway参数
启动一个my_net2网段的容器
注:默认的ip是随机按顺序分配的,如有需求可以用 –ip指定只有使用 –subnet创建的网络才能指定静态IP。my_net创建时没有指定 –subnet,如果指定静态IP报错如下
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77351.html