如何实现不同网段docker容器网络互通
作者:IT_Bigboy_sz
文章讲解了通过Docker bridge网络实现容器间通信的方法,包括关闭防火墙、拉取busybox镜像、创建容器并测试IP连通性,使用--link参数连接容器,以及跨网段通信的配置技巧
首先我们需要了解的是:每个docker容器都是隔离的,所以它们之间是相互不同的!
那么我们开始操作起来,让他们之间可以相互ping通网络。。。
一、拉取镜像创建容器
1.在这之前首先关闭防火墙
如果显示 runinng 则执行:
sudo systemctl stop firewalld
2.在https://hub.docker.com里拉取镜像 busybox
(注:busybox相当于小型的centos虚拟机,且比较小)
执行docker image ls 查看镜像;
3.创建两个容器
docker run -it -d --name test1 busybox docker run -it -d --name test2 busybox
二、查看网络连接状态
docker network ls
这里有个bridge,默认情况下创建的所有容器都会在bridge网段;
查看bridge网段详情通常是
docker network inspect bridge
这里我们下在一个小插件:
sudo yum install -y bridge-utils
这样执行
sudo brctl show
可以清晰简单的看到连接到各网段的容器
进入test1容器
docker exec -it test1 sh
在上图可以看到test2 的ip是172.17.0.3,那么我们ping一下test2试试看是否网络可通
是可以的 因为其在同一各网段;那么直接ping容器名字呢?
那么神操作来啦 简单的命令试试结果吧
docker run -d -it --link test2 --name test3 busybox
进入test3容器
OK!
那么如果不是在bridge网段的同期是否能ping通呢
首先建一个网段取名为:my-bridge
docker network create --driver bridge my-bridge
其中–driver是表示基于后面参数bridge建立的网段my-bridge
来吧,创建一个在my-bridge网段的容器
docker run -it -d --net=my-bridge --name test4 busybox
很显然test4 和test1.2.4都不在一个网段
ping下试试吧
不行的,那么见证奇迹的时刻到了,先看看网络连接
我们把test也加入bridge网段(test4会有两个ip)
docker network connect bridge test4
再看下网段情况
那么我们进入test4网段随意ping一下bridge网段的容器
OK,很奈斯~
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。