Weave 網絡結構分析 - 每天5分鐘玩轉 Docker 容器技術(64)
上一節我們安裝並創建了 Weave 網絡,本節將部署容器並分析網絡結構。
在 host1 中運行容器 bbox1:
eval $(weave env)
docker run --name bbox1 -itd busybox
首先執行 eval $(weave env)
很重要,其作用是將後續的 docker 命令發給 weave proxy 處理。如果要恢復之前的環境,可執行 eval $(weave env --restore)
。
查看一下當前容器 bbox1 的網絡配置:
bbox1 有兩個網絡接口 eth0 和 ethwe,其中 eth0 連接的是默認 bridge 網絡,即網橋 docker0。
現在我們重點分析 ethwe。從命名和分配的 IP 10.32.0.1/12 可以猜測 ethwe 與 weave 相關,[email protected]
告訴我們與 ethwe 對應的是編號 77 的 interface。從 host1 的 ip link
命令輸出中找到該 interface:
vethwepl22809
與 ethwe
是一對 veth pair,而且 vethwepl22809 掛在 host1 的 Linux bridge weave
上。
除了 vethwepl22809,weave 上還掛了一個 vethwe-bridge
,這是什麽?讓我們更深入的分析一下,查看 ip -d link
輸出:
這裏出現了多個新 interface:
① vethwe-bridge
與 vethwe-datapath
是 veth pair。
② vethwe-datapath
的父設備(master)是 datapath
。
③ datapath
是一個 openvswitch。
④ vxlan-6784
是 vxlan interface,其 master 也是 datapath
,weave 主機間是通過 VxLAN 通信的。
host1 的網絡結構如下圖所示:
weave 網絡包含兩個虛擬交換機:Linux bridge weave
和 Open vSwitch datapath
,veth pair vethwe-bridge
和 vethwe-datapath
將二者連接在一起。weave
和 datapath
分工不同,weave
負責將容器接入 weave 網絡,datapath
負責在主機間 VxLAN 隧道中並收發數據。
再運行一個容器 bbox2。
docker run --name bbox2 -itd busybox
weave DNS 為容器創建了默認域名 weave.local
,bbox1 能夠直接通過 hostname 與 bbox2 通信。
當前 host1 網絡結構為:
host1 已準備就緒,下一節部署 host2 並討論 Weave 的連通與隔離特性。
Weave 網絡結構分析 - 每天5分鐘玩轉 Docker 容器技術(64)