Dela via


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.16och 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:

  1. L2bridge-nätverket konfigureras med samma IP-undernät som containervärden
  2. 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
  • Samma undernät: Bryggd anslutning via Hyper-V virtuell växel
  • Korsundernät: Stöds inte (endast ett internt NAT-prefix)
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
  • Samma undernät: Bryggd anslutning via Hyper-V virtuell växel
  • Korsundernät: Routeras genom containerhosten
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
  • Samma undernät: Bryggd anslutning via Hyper-V virtuell växel
  • Korsundernät: Nätverkstrafik kapslas in och dirigeras via mgmt vNIC
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
  • Samma undernät: Bryggd anslutning via Hyper-V virtuell växel
  • Över subnät: MAC-adressen för container skrivs om vid ingress och utströmmande och dirigeras
Container-MAC-adress skrivs om vid in- och utpassage
  • Samma undernät: Bryggd anslutning
  • Korsundernät: dirigeras via Mgmt vNIC på WSv1809 och senare
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