在《Docker桥接网络入门》基础知识上,本文将通过实例来创建Docker的桥接网络,包括默认的桥接网络和用户自定义的桥接网络。并通过桥接网络和网络连接来测试各独立容器之间的连通性。
环境说明
1. 安装docker,可参考《Docker在CentOS系统中的安装》;
2. 容器alpine01和容器alpine02创建在默认桥接网络bridge上;
3. 容器alpine03、容器alpine04和容器alpine05创建在自定义的桥接网络alpine-net上;
4. 容器alpine05连接到bridge网桥上。
使用默认的桥接网络
1. 确认目前Docker宿主机的网络情况。
docker network ls
![b12ca34893891024ae09fa7de225afe9.png](https://img-blog.csdnimg.cn/img_convert/b12ca34893891024ae09fa7de225afe9.png)
当前Docker宿主机上只有一个默认的桥接网络:f8f96ec60ff2
2. 启动容器alpine01和容器alpine02,并默认连接到bridge网桥上。
docker run -dit --name alpine01 alpine ashdocker run -dit --name alpine02 alpine ash
没有指定 --network标志,两个容器都将连接到默认bridge网络。
![c6aab1e0529c32979911a3c8f78f1458.png](https://img-blog.csdnimg.cn/img_convert/c6aab1e0529c32979911a3c8f78f1458.png)
两容器已经正常启动如下:
![dd00cbd3292a6e87c8f750253822673c.png](https://img-blog.csdnimg.cn/img_convert/dd00cbd3292a6e87c8f750253822673c.png)
3. 检查容器alpine01和容器alpine02是否正确连接到bridge网桥上。
docker network inspect bridge
![a26622ae68ad45efce5fb8e72270a83e.png](https://img-blog.csdnimg.cn/img_convert/a26622ae68ad45efce5fb8e72270a83e.png)
上图可看出,默认网桥bridge的网关是172.17.0.1,子网:171.17.0.0/16
![d5050675eff1bbc9adbafa7d3ea11daa.png](https://img-blog.csdnimg.cn/img_convert/d5050675eff1bbc9adbafa7d3ea11daa.png)
上图可以看到,容器alpine01和容器alpine02已经连接到bridge默认网桥上,且IP分配的IP地址分别是:172.17.0.4和172.17.0.5
4. 容器alpine01和容器alpine02连通性测试。
4.1进入容器alpine01内部
docker attach alpine01
![d29f83007e21af60d974aac32f3bc54c.png](https://img-blog.csdnimg.cn/img_convert/d29f83007e21af60d974aac32f3bc54c.png)
4.2连通性测试ping外网和默认网桥内的其他节点。
ping -c 2 www.baidu.com
![5812fc0d69d29ba85c57d9c711faf4ec.png](https://img-blog.csdnimg.cn/img_convert/5812fc0d69d29ba85c57d9c711faf4ec.png)
ping -c 2 172.17.0.5
![1280fd2c9945fc26fd2a40129ab110ae.png](https://img-blog.csdnimg.cn/img_convert/1280fd2c9945fc26fd2a40129ab110ae.png)
从以上两个截图可以看出,内外均能连通。
使用用户自定义的桥接网络
1. 创建自定义网络alpine-net;
docker network create --driver bridge alpine-net
![2f30854289cbe0eabdb7c3e7dcf177c7.png](https://img-blog.csdnimg.cn/img_convert/2f30854289cbe0eabdb7c3e7dcf177c7.png)
2. 查看alpine-net网络的详细情况;
docker network inspect alpine-net
![405e6734fd0254f27216e3074f25f3f9.png](https://img-blog.csdnimg.cn/img_convert/405e6734fd0254f27216e3074f25f3f9.png)
自定义桥接网络alpine-net的网关是:172.22.0.1,子网:172.22.0.0/16
3. 在alpine-net上创建三个容器alpine03、alpine04和alpine05;
docker run -dit --name alpine03 --network alpine-net alpine ashdocker run -dit --name alpine04 --network alpine-net alpine ashdocker run -dit --name alpine05 --network alpine-net alpine ash
![9c60ac84f9305fb04a15d25a6bac791d.png](https://img-blog.csdnimg.cn/img_convert/9c60ac84f9305fb04a15d25a6bac791d.png)
4. 再次查看alpine-net网络详情;
![e6a4968127db0f093e5d4d121183ccc5.png](https://img-blog.csdnimg.cn/img_convert/e6a4968127db0f093e5d4d121183ccc5.png)
上图可以看到,容器alpine03、alpine04和容器alpine05已经连接到alpine-net网桥上,且分配的IP地址分别是:172.22.0.2、172.22.0.3和172.22.0.4
5. 连接alpine05到默认网桥bridge上;
docker network connect bridge alpine05
6. 再次查看bridge网络详情;
docker network inspect bridge
![a53b20b8c15bf2fd3ce2973d118f0365.png](https://img-blog.csdnimg.cn/img_convert/a53b20b8c15bf2fd3ce2973d118f0365.png)
从上图可以看出,alpine05成功连接到bridge网桥上,IP地址为:172.17.0.6
7. 连通性测试
7.1进入容器alpine03
docker container attach alpine03
7.2测试与外网www.baidu.com以及内网172.22.0.3(alpine04)、172.22.0.4(alpine05)的连通性
![ad64bbf6e4dc53554d6fa358b87a4bf8.png](https://img-blog.csdnimg.cn/img_convert/ad64bbf6e4dc53554d6fa358b87a4bf8.png)
由上图可以看出自定义网桥网络alpine-net内的节点与外网和内网中的其他节点均能ping通。
7.3 测试alpine-net 和 bridge之间的连通性
7.3.1进入alpine05
docker attach alpine05
7.3.2 ping alpine04(alpine-net中的节点)
Ping alpine04Ping 172.22.0.3
7.3.3 ping alpine01(bridge中的节点)
Ping alpine01Ping 172.17.0.4
![1b35043895e80bbde5b929d0682b12ce.png](https://img-blog.csdnimg.cn/img_convert/1b35043895e80bbde5b929d0682b12ce.png)
从上图连通性测试结果来看,alpine05可以通过容器名或IP连通alpine-net网络中的任何节点,而对创建了链接的另一个网络bridge内的节点,只能通过IP地址连接访问。为什么呢?原因可以在《Docker桥接网络入门》中自行查找!
今天的分享就到这里,欢迎大家关注、收藏、转发、评论。谢谢大家支持!