Docker 原生Overlay 网络工作流程
如图:有两个Container 独立的容器节点。他们通过Overlay网路进行通信。
网卡设备
Container eth0:eth0它是Overlay网络分配的唯一的IP地址,它是veth pair虚拟设备对,作用是实现点对点的通信,通过桥接到br0这个网桥中,可以实现不同 NameSwitch之间容器进行通信。
br0:它是Overlay默认创建的网桥。
VETP:对VXLAN数据包的封装与街封装。
Container eth1:eth1是容器主机的默认网络,主要提供容器访问外网所提供的服务,走的默认docker网络架构,只不过他创建了docker_gwbridge这个网桥。
docker_gwbridge:docker_gwbridge是容器所创建的网桥它替代了docker0的服务。
eth0:真机网卡与外界网卡连接得真机网卡,它用来转发,容器VXLAN与NAT两种网卡类型的数据包到指定的对端节点。
发送数据包流程
容器Container1 发送数据包 到容器 Container2。
- 1、容器Container1会通过Container eth0 将这个数据包发送到 10.0.0.1 的网关。
- 2、网关将数据包发送出去后到达b20网桥。
- 3、b20网桥针对VXLAN设备,主要用于捕获对外的数据包通过VETP进行数据包封装。
- 4、封装好将VXLAN格式数据包交给eth0,通过UDP方式交给Container2的eth0。
- 5、Container2收到数据包后通过VETP将数据包解封装。
- 6、网桥通过网关将解封装的数据包转发给Container eth0,完毕通信。