IT工程师都需要掌握的容器技术之Docker容器网络( 二 )


IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
其实当你在host1主机上创建好ov_net1的网络consul会自动将该网络信息同步至host2主机上 , 我们再host2主机进行验证一下
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
4)我们在主机host1上创建容器test1 , 同时网络设置为ov_net1 , 具体操作如下
1. # 创建容器test1,并将网络指定为ov_net1  2.   docker run -itd --name test1 --hostname test1 --network ov_net1 busybox  
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
其实在我们创建容器test1后 , docker会自动创建一个docker_gwbridge的bridge网络 , 该网络用于我们上图所说的eth1网卡 , 从而能够让容器能够访问外部网络
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
我们再看一下test1容器的路由信息 , 可以发现其默认路由直接指向了eth1接口 , 同时ping外网也确实能够ping通
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 

IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
5)最后我们在host2主机上创建test2容器 , 也指定其网络为ov_net1 , 然后验证test1与test2是否能够互访
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
如上图我们在host2主机上成功创建了test2容器 , 同时其也自动配置了两个网卡接口一个用于连接overlay网络一个用于连接外部网络 。现在我们测试一下test2容器是否能够ping通test1容器 , 具体操作如下
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
测试发现test2容器确实可以ping通test1容器 , 同时还实现了DNS功能 , 主动把test1容器的名称映射其对应的IP 10.0.0.2 。
下面我们来看看overlay网络能够连通的具体逻辑 , docker会为每个overlay网络创建一个独立的namespace , 在namespace中会创建一个br0的网桥 , 其上有两组endpoint , 一组endpoint的一端连br0一端连容器的eth0口 , 另外一组endponit的一端连br0另外一段连vxlan接口 , 该接口用于主机间建立vxlan tunnel , 不同主机上的容器就是通过该tunnel进行通信的 , 具体架构图如下:
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
04 Docker MacVlan网络Macvlan其实是linux系统自带技术允许你在物理网卡上创建子接口 , 创建的这些子接口每个都有自己的唯一MAC地址 , 同时你也可以在这些子接口上配置IP , 然后可以将应用程序、虚机及容器绑定到指定的子接口 , 从而实现自己的MAC与IP直接连接到物理网络 , Macvlan的最大优点是性能比较好 , 缺点是许多nic对mac地址数量有限制 。Macvlan具体架构具体如下图:
IT工程师都需要掌握的容器技术之Docker容器网络

文章插图
 
由于Macvlan在生产环境中部署较少 , 我们本篇文章就不做实验进行演示了 , 我们在这展示一下其创建的具体命令 , 感兴趣的可以按照下面命令自己来搭环境测试 。
1. # 创建macvlan网络mv_net1 , 其中parent=eth0是指定macvlan网络使用的接口  2.   docker network create -d macvlan  -o parent=eth0 mv_net1  3. # 创建容器test3指定其网络为mv_net1的macvlan网络  4.   docker run -d --name test3 --network mv_net1 busybox 05 总结至此我们docker容器网络就全部讲完了 , 大家有什么问题欢迎在文章后面进行评论留言 , 最后如果喜欢不要忘了点赞、关注与转发哦!

【IT工程师都需要掌握的容器技术之Docker容器网络】


推荐阅读