覆蓋網路驅動程式

overlay 網路驅動在多個 Docker 守護程序主機之間建立了一個分散式網路。該網路位於主機特定網路的上層(overlay),允許連線到它的容器在啟用加密時進行安全通訊。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/tcp7946/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 標誌建立)時才有效。

容器發現

在 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

後續步驟