概念图
小绿框为虚拟网卡,docker0为网桥,eth0为物理网卡
虚机网桥
docker会在宿主机上创建多个网桥(类型如Bridge、Host、None,默认的网桥docker0)
查看当前宿主机中的网桥:docker network ls
brctl工具
查看链接到网桥上的虚拟网口信息:brctl show docker0 (下载brctl工具:yum install -y bridge-utils)
每个容器都会分配一个网桥上的虚拟网口,并将docker0的IP地址设置为默认网关,容器发起的网络流量通过宿主机的iptables规则进行转发
Linux虚拟网络技术
1.宿主机和容器各创建一个虚拟接口veth(组成一个veth pair)
2.宿主机虚拟接口连接到docker0网桥或指定网桥
3.容器中的虚拟网口修改名为eth0
4.从网桥中分配一个闲置的IP地址给容器eth0,并设置网关为docker0的IP网关
Bridge
# 查看网桥信息 docker network ls # 创建网桥 docker network create -d bridge my-bridge # 创建容器时指定网桥 docker run 容器ID --network=my-bridge # 查看my-bridge网桥的链接信息 docker network inspect my-bridge # 为容器添加一个网段(如172.1.17.1 -> 172.1.17.1、172.1.18.1),可以根据容器名ping通 docker network connect my-bridge 容器ID