上一節咱們安裝並建立了 Weave 網絡,本節將部署容器並分析網絡結構。
在 host1 中運行容器 bbox1:docker
eval $(weave env)網絡
docker run --name bbox1 -itd busyboxrest
首先執行 eval $(weave env)
很重要,其做用是將後續的 docker 命令發給 weave proxy 處理。若是要恢復以前的環境,可執行 eval $(weave env --restore)
。code
查看一下當前容器 bbox1 的網絡配置:
接口
bbox1 有兩個網絡接口 eth0 和 ethwe,其中 eth0 鏈接的是默認 bridge 網絡,即網橋 docker0。ip
如今咱們重點分析 ethwe。從命名和分配的 IP 10.32.0.1/12 能夠猜想 ethwe 與 weave 相關,ethwe@if77
告訴咱們與 ethwe 對應的是編號 77 的 interface。從 host1 的 ip link
命令輸出中找到該 interface:部署
vethwepl22809
與 ethwe
是一對 veth pair,並且 vethwepl22809 掛在 host1 的 Linux bridge weave
上。域名
除了 vethwepl22809,weave 上還掛了一個 vethwe-bridge
,這是什麼?讓咱們更深刻的分析一下,查看 ip -d link
輸出:it
這裏出現了多個新 interface:ast
① 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 的連通與隔離特性。