weave 是 Weaveworks 開發的容器網絡解決方案。weave 創建的虛擬網絡可以將部署在多個主機上的容器連接起來。對容器來說,weave 就像一個巨大的以太網交換機,所有容器都被接入這個交換機,容器可以直接通信,無需 NAT 和端口映射。除此之外,weave 的 DNS 模塊使容器可以通過 hostname 訪問。
實驗環境描述
weave 不依賴分布式數據庫(例如 etcd 和 consul)交換網絡信息,每個主機上只需運行 weave 組件就能建立起跨主機容器網絡。我們會在 host1 和 host2 上部署 weave 並實踐 weave 的各項特性。
安裝部署 weave
weave 安裝非常簡單,在 host1 和 host2 上執行如下命令:
curl -L git.io/weave -o /usr/local/bin/weave
chmod a+x /usr/local/bin/weave
在 host1 中啟動 weave
在 host1 中執行 weave launch
命令,啟動 weave 相關服務。weave 的所有組件都是以容器方式運行的,weave 會從 docker hub 下載最新的 image 並啟動容器。
weave 運行了三個容器:
weave
是主程序,負責建立 weave 網絡,收發數據 ,提供 DNS 服務等。
weaveplugin
是 libnetwork CNM driver,實現 Docker 網絡。
weaveproxy
提供 Docker 命令的代理服務,當用戶運行 Docker CLI 創建容器時,它會自動將容器添加到 weave 網絡。
weave 會創建一個新的 Docker 網絡 weave
:
driver 為 weavemesh
,IP 范圍 10.32.0.0/12
。
docker network inspect weave
......
"Config": [
{
"Subnet": "10.32.0.0/12"
}
]
......
weave 已經安裝配置完畢,下一節我們部署容器並分析 weave 網絡底層結構。