Windows 容器的網路功能
適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016
重要
如需一般 Docker 網路命令、選項和語法,請參閱 Docker 容器網路 功能。 除了不支援的功能和網路選項中所述的任何案例之外,Windows 上所有 Docker 網路命令都支援與 Linux 上相同的語法。 不過,Windows 和 Linux 網路堆疊不同,因此您會發現 Windows 上不支援某些 Linux 網路命令(例如, ifconfig
)。
基本網路架構
本主題提供 Docker 如何在 Windows 上建立和管理主機網路的概觀。 Windows 容器在網路方面的運作方式與虛擬機類似。 每個容器都有一張虛擬網路介面卡(vNIC),其已連線至 Hyper-V 虛擬交換器(vSwitch)。 Windows 支援五種不同的 網路驅動程式或模式 ,可透過 Docker 建立: nat、 overlay、 transparent、 l2bridge 和 l2tunnel。 根據您的實體網路基礎結構和單一主機與多主機網路需求,您應該選擇最符合您需求的網路驅動程式。
第一次執行 Docker 引擎時,它會建立預設 NAT 網路 'nat',它會使用內部 vSwitch 和名為 WinNAT
的 Windows 元件。 如果主機上有任何預先存在的外部 vSwitch 是透過 PowerShell 或 Hyper-V 管理員所建立的,它們也可以使用透明網路驅動程式供 Docker 使用,並在您執行docker network ls
命令時看到。
- 內部 vSwitch 是未直接連線到容器主機上網路適配器的內部 vSwitch。
- 外部 vSwitch 是直接連線到容器主機上網路適配器的 vSwitch。
'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 會使用對應的 Windows 防火牆允許規則建立 WinNAT 埠轉送規則和對應。
- 對於所有其他網路,HNS 會利用虛擬篩選平臺 (VFP) 來建立原則,包括負載平衡、ACL 和封裝。 如需 HNS API 和架構的詳細資訊,請參閱 VM 和容器的主機計算網路 (HCN) 服務 API。
不支援的功能和網路選項
Windows 目前 不支援 下列網路選項:
- 從 Windows Server 2022 起,Windows 容器支援下列 IPv6 網路功能:
- 連結至 l2bridge 網路的容器支援 IPv6 堆棧。
- 連結至透明網路的容器支援使用 IPv6 搭配自我指派 IP 位址的通訊,但不支援 HNS 提供的 IP 位址指派和其他網路服務,例如負載平衡和 ACL。
- 連結至 NAT 和重疊網路的 Windows 容器不支援透過 IPv6 堆棧進行通訊。
- 透過 IPsec 加密的容器通訊。
- 主機模式 網路。
- 透過透明網路驅動程式在虛擬化 Azure 基礎結構上進行網路功能。
Command | 不支援的選項 |
---|---|
docker run |
--ip6 , --dns-option |
docker network create |
--aux-address 、--internal 、、--ipam-driver --ip-range 、--ipam-opt 、、、 --ipv6 --opt encrypted |