Nätverksdrivrutiner för Windows-container
Gäller för: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
Förutom att använda standardnätverket "nat" som skapats av Docker i Windows kan användarna definiera anpassade containernätverk. Användardefinierade nätverk kan skapas med kommandot Docker CLI docker network create -d <NETWORK DRIVER TYPE> <NAME>
. I Windows är följande typer av nätverksdrivrutiner tillgängliga:
NAT-nätverksdrivrutin
Containrar som är anslutna till ett nätverk som skapats med nat-drivrutinen ansluts till en intern Hyper-V växel och tar emot en IP-adress från det användardefinierade IP-prefixet (--subnet
). Portvidarebefordring/mappning från containervärden till containerslutpunkter stöds.
Tips
Det går att anpassa undernätet som används av standardnätverket "nat" via inställningen fixed-cidr
i Docker-daemonkonfigurationsfilen.
Obs
NAT-nätverk som skapats på Windows Server 2019 (eller senare) sparas inte längre efter omstart.
Skapa ett NAT-nätverk
För att skapa ett nytt NAT-nätverk med subnet 10.244.0.0/24
:
docker network create -d "nat" --subnet "10.244.0.0/24" my_nat
Transparent nätverksdrivrutin
Containrar som är anslutna till ett nätverk som skapats med den transparenta drivrutinen ansluts direkt till det fysiska nätverket via en extern Hyper-V växel. IP-adresser från det fysiska nätverket kan tilldelas statiskt (kräver användardefinierad --subnet
alternativ) eller dynamiskt med hjälp av en extern DHCP-server.
Obs
På grund av följande krav stöds inte anslutning av dina containervärdar via ett transparent nätverk på virtuella Azure-datorer.
Kräver: När det här läget används i ett virtualiseringsscenario (containervärden är en virtuell dator) MAC-adressförfalskning krävs.
Skapa ett transparent nätverk
Skapa ett nytt transparent nätverk med subnet 10.244.0.0/24
, gateway 10.244.0.1
, DNS-server 10.244.0.7
och VLAN-ID 7
:
docker network create -d "transparent" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent
Overlay-nätverksdrivrutin
Containrar som ofta används av orkestratörer som Docker Swarm och Kubernetes, kan kommunicera med andra containrar anslutna till samma överliggande nätverk över flera containervärdar. Varje överläggsnätverk skapas med ett eget IP-undernät som definieras av ett privat IP-prefix. Nätverksdrivrutinen för överlägg använder VXLAN-inkapsling för att uppnå nätverkstrafikisolering mellan klientcontainernätverk och möjliggör återanvändning av IP-adresser i överläggsnätverk.
Kräver: Se till att din miljö uppfyller de nödvändiga förutsättningar för att skapa överläggsnätverk.
Kräver: På Windows Server 2019 kräver detta KB4489899.
Kräver: På Windows Server 2016 kräver detta KB4015217.
Not
I Windows Server 2019 och senare använder överläggsnätverk som skapats av Docker Swarm VFP NAT-regler för utgående anslutning. Det innebär att en viss container tar emot en IP-adress. Det innebär också att ICMP-baserade verktyg som ping
eller Test-NetConnection
ska konfigureras med hjälp av sina TCP/UDP-alternativ i felsökningssituationer.
Skapa ett överläggsnätverk
Skapa ett nytt överläggsnätverk med 10.244.0.0/24
, DNS-server 168.63.129.16
och VSID 4096
:
docker network create -d "overlay" --attachable --subnet "10.244.0.0/24" -o com.docker.network.windowsshim.dnsservers="168.63.129.16" -o com.docker.network.driver.overlay.vxlanid_list="4096" my_overlay
L2bridge-nätverksdrivrutin
Containrar som är anslutna till ett nätverk som skapats med drivrutinen "l2bridge" ansluts till det fysiska nätverket via en extern Hyper-V växel. I l2bridge har containernätverkstrafiken samma MAC-adress som värden på grund av addressöversättningsåtgärden på lager 2 (MAC-omskrivning) vid både inkommande och utgående trafik. I datacenter hjälper detta till att minska belastningen på växlar som måste lära sig MAC-adresser för ibland kortlivade containrar. L2bridge-nätverk kan konfigureras på två olika sätt:
- L2bridge-nätverket konfigureras med samma IP-undernät som containervärden
- L2bridge-nätverket har konfigurerats med ett nytt anpassat IP-undernät
I konfiguration 2 måste användarna lägga till en slutpunkt i värdnätverksfacket som fungerar som en gateway och konfigurera routningsfunktioner för det avsedda prefixet.
Skapa ett l2bridge-nätverk
Så här skapar du ett nytt l2bridge-nätverk med undernätet 10.244.0.0/24
, gateway 10.244.0.1
, DNS-server 10.244.0.7
och VLAN ID 7:
docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_l2bridge
Tips
L2bridge-nätverk är mycket programmerbara. Mer information om hur du konfigurerar l2bridge finns här.
L2tunnel-nätverksdrivrutin
Skapandet är identiskt med l2bridge, men den här drivrutinen ska endast användas i en Microsoft Cloud Stack (Azure). Den enda skillnaden jämfört med l2bridge är att all containertrafik skickas till virtualiseringsvärden där SDN-principen tillämpas, vilket möjliggör funktioner som Azure Network Security Groups för containrar.
Nätverkstopologier och IPAM
Tabellen nedan visar hur nätverksanslutning tillhandahålls för interna (container-till-container) och externa anslutningar för varje nätverksdrivrutin.
Nätverkslägen/Docker-drivrutiner
Docker Windows-nätverksdrivrutin | Vanliga användningsområden | Container till container (enskild nod) | Container till extern (enskild nod och flera noder) | Container-till-container (flera noder) |
---|---|---|---|---|
NAT (Standard) | Bra för utvecklare |
|
Dirigerat via administration vNIC (bundet till WinNAT) | Stöds inte direkt: kräver exponering av portar via värden |
Transparent | Bra för utvecklare eller små distributioner |
|
Dirigeras via containerhost med direkt åtkomst till (fysiskt) nätverkskort | Dirigeras via containervärd med direkt åtkomst till (fysiskt) nätverkskort |
Överlägg | Bra för flera noder; krävs för Docker Swarm, tillgängligt i Kubernetes |
|
Stöds inte direkt – kräver den andra containerslutpunkten som är ansluten till NAT-nätverket på Windows Server 2016 eller VFP NAT-regeln i Windows Server 2019. | Samma/korsande undernät: Nätverkstrafiken kapslas in med VXLAN och dirigeras via Mgmt vNIC |
L2Bridge | Används för Kubernetes och Microsoft SDN |
|
Container-MAC-adress skrivs om vid in- och utpassage |
|
L2Tunnel | Endast Azure | Samma/överkorsande undernät: Återlänkat till den fysiska värdens Hyper-V virtuella switch där policyn tillämpas. | Trafiken måste gå via en virtuell Azure-nätverksgateway | Samma/korsande undernät: Hårnålskopplad till den fysiska värdens Hyper-V virtuella växel där policyn tillämpas. |
IPAM
IP-adresser allokeras och tilldelas olika för varje nätverksdrivrutin. Windows använder värdnätverkstjänsten (HNS) för att tillhandahålla IPAM för nat-drivrutinen och fungerar med Docker Swarm Mode (internt KVS) för att tillhandahålla IPAM för överlägg. Alla andra nätverksdrivrutiner använder en extern IPAM.
Nätverksläge/drivrutin | IPAM |
---|---|
NAT | Dynamisk IP-allokering och tilldelning av värdnätverkstjänst (HNS) från internt NAT-undernätsprefix |
Genomskinlig | Statisk eller dynamisk (med extern DHCP-server) IP-allokering och tilldelning från IP-adresser i containervärdens nätverksprefix |
Överlagring | Dynamisk IP-adressallokering från prefix som hanteras av Docker Engine Swarm-läge och tilldelning via HNS |
L2Bridge | Dynamisk IP-allokering och tilldelning via Host Networking Service (HNS) från tillhandahållet undernätsprefix |
L2Tunnel | Endast Azure – Dynamisk IP-allokering och tilldelning från plugin-program |
Tjänsteupptäckt
Service Discovery stöds endast för vissa Windows-nätverksdrivrutiner.
Drivrutinsnamn | Identifiering av lokal tjänst | Global tjänstupptäckning |
---|---|---|
natt | JA | JA med Docker EE |
överlagra | JA | JA med Docker EE eller kube-dns |
genomskinlig | NEJ | NEJ |
l2bridge | JA med kube-dns | JA med kube-dns |