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,完畢通信。