覆蓋網路驅動程式

overlay 網路驅動程式會在多個 Docker Daemon 主機之間建立分散式網路。此網路位於主機特定網路之上(覆蓋),允許連接到它的容器在啟用加密時安全地進行通訊。Docker 會透明地處理往返正確 Docker Daemon 主機和正確目標容器的每個封包的路由。

您可以使用 docker network create 建立使用者定義的 overlay 網路,就像建立使用者定義的 bridge 網路一樣。服務或容器可以一次連接到多個網路。服務或容器只能在其各自連接的網路上進行通訊。

Overlay 網路通常用於在 Swarm 服務之間建立連線,但您也可以使用它來連線在不同主機上執行的獨立容器。使用獨立容器時,仍然需要使用 Swarm 模式來建立主機之間的連線。

本頁面概括介紹了 Overlay 網路,以及與獨立容器一起使用的情況。有關 Swarm 服務 Overlay 的資訊,請參閱 管理 Swarm 服務網路

建立 Overlay 網路

在開始之前,您必須確保參與的節點可以透過網路進行通訊。下表列出了參與 Overlay 網路的每個主機需要開啟的埠

說明
2377/tcp預設的 Swarm 控制平面埠,可使用 docker swarm join --listen-addr 進行設定
4789/udp預設的 Overlay 流量埠,可使用 docker swarm init --data-path-addr 進行設定
7946/tcp, 7946/udp用於節點之間的通訊,不可設定

若要建立其他 Docker 主機上的容器可以連線到的 Overlay 網路,請執行以下命令

$ docker network create -d overlay --attachable my-attachable-overlay

--attachable 選項允許獨立容器和 Swarm 服務連線到 Overlay 網路。如果沒有 --attachable,則只有 Swarm 服務可以連線到網路。

您可以指定 IP 位址範圍、子網路、閘道器和其他選項。詳情請參閱 docker network create --help

在 Overlay 網路上加密流量

使用 --opt encrypted 旗標加密透過 Overlay 網路傳輸的應用程式資料

$ docker network create \
  --opt encrypted \
  --driver overlay \
  --attachable \
  my-attachable-multi-host-network

這會在虛擬可延伸區域網路 (VXLAN) 層級啟用 IPsec 加密。此加密會造成不可忽視的效能損失,因此您應該在生產環境中使用此選項之前進行測試。

警告

請勿將 Windows 容器連接到加密的 Overlay 網路。

Windows 不支援 Overlay 網路加密。當 Windows 主機嘗試連線到加密的 Overlay 網路時,Swarm 不會回報錯誤,但 Windows 容器的網路會受到以下影響

  • Windows 容器無法與網路上 Linux 容器通訊
  • 網路上 Windows 容器之間的資料流量未加密

將容器連接到 Overlay 網路

將容器新增到 Overlay 網路可讓它們與其他容器進行通訊,而無需在個別 Docker Daemon 主機上設定路由。這樣做的先決條件是主機已加入同一個 Swarm。

使用 busybox 容器加入名為 multi-host-network 的 Overlay 網路

$ docker run --network multi-host-network busybox sh

注意事項

僅當 Overlay 網路可連接(使用 --attachable 旗標建立)時,這才有效。

容器探索

發佈 Overlay 網路上容器的埠會將埠開啟給同一網路上其他容器。可以透過使用容器名稱進行 DNS 查詢來探索容器。

旗標值說明
-p 8080:80將容器中的 TCP 埠 80 映射到 Overlay 網路上的埠 8080
-p 8080:80/udp將容器中的 UDP 埠 80 映射到 Overlay 網路上的埠 8080
-p 8080:80/sctp將容器中的 SCTP 埠 80 映射到 Overlay 網路上的埠 8080
-p 8080:80/tcp -p 8080:80/udp將容器中的 TCP 埠 80 映射到 Overlay 網路上的 TCP 埠 8080,並將容器中的 UDP 埠 80 映射到 Overlay 網路上的 UDP 埠 8080

Overlay 網路的連線限制

由於 Linux 核心設定的限制,當同一個主機上共同存放 1000 個容器時,Overlay 網路會變得不穩定,並且容器間的通訊可能會中斷。

如需更多關於此限制的資訊,請參閱 moby/moby#44973

後續步驟