1. 程式人生 > >Weave 網絡結構分析 - 每天5分鐘玩轉 Docker 容器技術(64)

Weave 網絡結構分析 - 每天5分鐘玩轉 Docker 容器技術(64)

docker 教程 容器

上一節我們安裝並創建了 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)