Overlay 網路驅動程式

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

您可以使用 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 常駐程式主機上設定路由。執行此動作的前提是主機必須已加入同一個 Swarm。

若要讓 busybox 容器加入名為 multi-host-network 的 Overlay 網路:

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

這僅在 Overlay 網路為可連接 (attachable) 時(即使用 --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

下一步

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.