Docker bridge网络

前提拉取镜像

docker pull busybox

image.png

步骤1:创建busybox容器,执行如下步骤创建容器。

docker run -it -d --name=test1 busybox
docker run -it -d --name=test2 busybox

image.png

步骤2:执行docker attach test1进入test1容器,并执行ip a查看其ip地址。执行ctrl+p ctrl+q退出容器。对test2执行同样的操作。

image.pngimage.png

步骤3:从test2容器ping test1,再ping外网,检查连通性。执行完后ctrl+p ctrl+q退出。

image.pngimage.png

步骤4:查看主机的iptables的nat表,在POSTROUTING链里发现当非docker0网卡为出接口时,会做NAT转换。

iptables -t nat -vnL

image.png

步骤5:创建新的bridge网络。查看已创建的bridge网络。

docker network create --driver bridge isolated_nw
docker network  ls

image.png

步骤6:使用ip a查看主机网络空间,可以发现新增了bridge,后缀为bridge网络的uuid。image.png

步骤7:使用新的bridge网络创建新的容器。

docker run -it -d --name=test3 --network=isolated_nw busybox
docker ps

image.png

**步骤8:查看主机空间的网络状况,新增了新的veth接口。挂在新的bridge网桥下面。

image.png

步骤9:使用brctl show查看网桥状况,此时新增的bridge下挂了一个网络接口,就是test3容器的网络接口。image.png

步骤10:登陆到test3容器,查看其ip地址发现和主机网络中的新增桥的地址在同一网段。,尝试ping test1和test2。结果是无法ping通,说明不同的bridge之间网络是隔离的。

docker attach test3
ping 172.17.0.2

image.png
image.png
步骤11:查看主机的iptables,主机的iptables显示从新增网桥到docker0网桥的数据包会被丢弃。
image.png

步骤12:将test3连接到bridge网桥上。查看主机网络和brctl,会有新的接口挂到了docker0上。

docker network connect bridge test3
brctl show

image.png

**步骤13:进入test3容器,查看容器网络,有和docker0处于相同网段的新的接口。

尝试ping test1和test2。test3已经可以和test1,test2相互通信。**
可以看到容器test3下新增加了一个172.17网段的网口image.png
此时可以互通
image.png
如若取消添加的网口

docker network disconnect bridge test3

image.png

posted @ 2024-07-16 15:30  元卿  阅读(3)  评论(0编辑  收藏  举报