Windows 容器的網路功能

適用于:Windows Server 2022、Windows Server 2019、Windows Server 2016

重要

如需一般 Docker 網路命令、選項和語法,請參閱 Docker 容器網路 。 除了不支援 的功能和網路選項中所述的任何案例之外,Windows 上所有 Docker 網路命令都支援與 Linux 上相同的語法。 不過,Windows 和 Linux 網路堆疊不同,因此您會發現某些 Linux 網路命令 (例如 ifconfig ,Windows 不支援) 。

基本網路架構

本主題概述 Docker 如何在 Windows 上建立及管理主機網路。 Windows 容器在網路功能方面類似於虛擬機器。 每個容器都有連接到 Hyper-V 虛擬交換器 (vSwitch) 的虛擬網路介面卡 (vNIC)。 Windows 支援可透過 Docker 來建立的五種不同網路驅動程式或模式natoverlaytransparentl2bridgel2tunnel。 根據您的實體網路基礎結構和單一與多主機網路功能需求,您應該選擇最符合需求的網路驅動程式。

說明 Windows 網路堆疊

第一次執行 Docker 引擎時,它會建立預設 NAT 網路 'nat',其會使用內部 vSwitch 和名為 的 WinNAT Windows 元件。 如果主機上有透過 PowerShell 或 Hyper-V 管理員來建立的任何既有外部 vSwitch,Docker 也可以透過 transparent 網路驅動程式來使用,而當您執行 docker network ls 命令時,也會看到這些 vSwitch。

說明 Docker 網路 ls PowerShell 命令

  • 內部vSwitch 是未直接連線到容器主機上網路介面卡的內部 vSwitch。
  • 外部vSwitch 是直接連線到容器主機上網路介面卡的 vSwitch。

說明 PowerShell 命令Get-VMSwitch

'nat' 網路是在 Windows 上執行的容器的預設網路。 任何容器如果在 Windows 上執行,但沒有任何旗標或引數實作特定網路組態,其將會連接到預設的 'nat' 網路,且系統會自動從 'nat' 網路的內部首碼 IP 範圍指派 IP 位址給容器。 用於 'nat' 的預設內部 IP 首碼為 172.16.0.0/16。

使用主機網路服務進行容器網路管理

主機網路服務 (HNS) 和主機運算服務 (HCS) 共同建立容器,並將端點連接至網路。 您可以透過 HNS Powershell 協助程式模組與 HNS互動。

建立網路

  • HNS 為每個網路建立 Hyper-V 虛擬交換器
  • HNS 建立所需的 NAT 及 IP 集區

端點建立

  • HNS 為每個容器端點建立網路命名空間
  • HNS/HCS 將 v(m)NIC 放在網路命名空間中
  • HNS 建立 (vSwitch) 連接埠
  • HNS 指派 IP 位址、DNS 資訊、路由等 (受制於網路模式) 給端點

建立原則

  • 針對預設網路位址轉譯 (NAT) 網路,HNS 會建立 WinNAT 埠轉送規則,並使用對應的 Windows 防火牆 ALLOW 規則進行對應。
  • 針對所有其他網路,HNS 會利用虛擬篩選平臺 (VFP) 來建立原則,其中包括負載平衡、ACL 和封裝。 如需 HNS API 和架構的詳細資訊,請參閱 VM 和容器的主機計算網路 (HCN) 服務 API

說明 HNS 管理堆疊

不支援的功能和網路選項

Windows 目前 不支援 下列網路選項:

  • 從 Windows Server 2022 開始,連結至 l2bridge 網路的 Windows 容器支援 IPv6 堆疊。 不過,連結至 NAT 和重迭網路的 Windows 容器不支援透過 IPv6 堆疊進行通訊。
  • 透過 IPsec 加密的容器通訊。
  • 主機模式 網路功能。
  • 透過透明網路驅動程式在虛擬化 Azure 基礎結構上進行網路。
Command 不支援的選項
docker run --ip6, --dns-option
docker network create --aux-address, --internal, --ip-range, --ipam-driver, --ipam-opt, --ipv6, --opt encrypted