爲支持容器跨主機通訊,Docker 提供了 overlay driver,使用戶能夠建立基於 VxLAN 的 overlay 網絡。VxLAN 可將二層數據封裝到 UDP 進行傳輸,VxLAN 提供與 VLAN 相同的以太網二層服務,可是擁有更強的擴展性和靈活性。有關 VxLAN 更詳細的內容可參考 CloudMan 在《天天5分鐘玩轉 OpenStack》中的相關章節。docker
Docerk overlay 網絡須要一個 key-value 數據庫用於保存網絡狀態信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 軟件,咱們這裏使用 Consul。數據庫
咱們會直接使用上一章 docker-machine 建立的實驗環境。在 docker 主機 host1(192.168.56.104)和 host2(192.168.56.105)上實踐各類跨主機網絡方案,在 192.168.56.101 上部署支持的組件,好比 Consul。bootstrap
最簡單的方式是以容器方式運行 Consul:網絡
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrapspa
容器啓動後,能夠經過 http://192.168.56.101:8500 訪問 Consul。rest
接下來修改 host1 和 host2 的 docker daemon 的配置文件/etc/systemd/system/docker.service
。code
--cluster-store
指定 consul 的地址。
--cluster-advertise
告知 consul 本身的鏈接地址。server
重啓 docker daemon。部署
systemctl daemon-reload get
systemctl restart docker.service
host1 和 host2 將自動註冊到 Consul 數據庫中。
準備就緒,實驗環境以下:
下一節建立 overlay 網絡。