Delen via


Windows-containernetwerkstuurprogramma's

Van toepassing op: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

Naast het gebruik van het standaard nat-netwerk dat is gemaakt door Docker in Windows, kunnen gebruikers aangepaste containernetwerken definiëren. Door de gebruiker gedefinieerde netwerken kunnen worden gemaakt met behulp van de Docker CLI-opdracht docker network create -d <NETWORK DRIVER TYPE> <NAME>. In Windows zijn de volgende typen netwerkstuurprogramma's beschikbaar:

NAT-netwerkstuurprogramma

Containers die zijn gekoppeld aan een netwerk dat is gemaakt met het nat-stuurprogramma, worden verbonden met een interne Hyper-V-switch en ontvangen een IP-adres van het door de gebruiker opgegeven IP-voorvoegsel (--subnet). Het doorsturen of toewijzen van poorten van de containerhost naar container-endpoints wordt ondersteund.

Tip

Het is mogelijk om het subnet dat door het standaard 'nat'-netwerk wordt gebruikt aan te passen via de fixed-cidr-instelling in het Docker-daemonconfiguratiebestand .

Notitie

NAT-netwerken die zijn gemaakt in Windows Server 2019 (of hoger) worden niet meer behouden na het opnieuw opstarten.

Een NAT-netwerk maken

Een nieuw NAT-netwerk maken met subnet-10.244.0.0/24:

docker network create -d "nat" --subnet "10.244.0.0/24" my_nat

Transparant netwerkstuurprogramma

Containers die zijn gekoppeld aan een netwerk dat is gemaakt met het transparante stuurprogramma, worden rechtstreeks verbonden met het fysieke netwerk via een externe Hyper-V-switch. IP-adressen van het fysieke netwerk kunnen statisch worden toegewezen (vereist door de gebruiker opgegeven --subnet optie) of dynamisch met behulp van een externe DHCP-server.

Notitie

Vanwege de volgende vereiste wordt het verbinden van uw containerhosts via een transparant netwerk niet ondersteund op Azure-VM's.

Vereist: wanneer deze modus wordt gebruikt in een virtualisatiescenario (containerhost is een VM) MAC-adresvervalsing is vereist.

Een transparant netwerk maken

Een nieuw transparant netwerk maken met subnet 10.244.0.0/24, gateway 10.244.0.1, DNS-server 10.244.0.7 en 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-netwerkstuurprogramma

Populair gebruikt door containers orchestrators zoals Docker Swarm en Kubernetes, containers die zijn gekoppeld aan een overlaynetwerk kunnen communiceren met andere containers die zijn gekoppeld aan hetzelfde netwerk via meerdere containerhosts. Elk overlaynetwerk wordt gemaakt met een eigen IP-subnet, gedefinieerd door een privé-IP-voorvoegsel. Het overlaynetwerkstuurprogramma maakt gebruik van VXLAN-inkapseling om isolatie van netwerkverkeer tussen tenantcontainernetwerken te bereiken en maakt het opnieuw gebruiken van IP-adressen in overlaynetwerken mogelijk.

Vereist: zorg ervoor dat uw omgeving voldoet aan deze vereiste vereisten voor het maken van overlaynetwerken.

Vereist: Op Windows Server 2019 is hiervoor KB4489899vereist.

Vereist: Op Windows Server 2016 is hiervoor KB4015217vereist.

Notitie

In Windows Server 2019 en hoger maken overlaynetwerken die zijn gemaakt door Docker Swarm gebruik van VFP NAT-regels voor uitgaande connectiviteit. Dit betekent dat een bepaalde container 1 IP-adres ontvangt. Het betekent ook dat op ICMP gebaseerde hulpprogramma's zoals ping of Test-NetConnection moeten worden geconfigureerd met behulp van hun TCP/UDP-opties in foutopsporingssituaties.

Een overlaynetwerk maken

Een nieuw overlaynetwerk maken met subnet-10.244.0.0/24, DNS-server 168.63.129.16en 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-netwerkstuurprogramma

Containers die zijn gekoppeld aan een netwerk dat is gemaakt met het stuurprogramma l2bridge, worden via een externe Hyper-V-switch verbonden met het fysieke netwerk. In l2bridge heeft containernetwerkverkeer hetzelfde MAC-adres als de host vanwege laag-2-adresomzetting (MAC-re-write) voor inkomend en uitgaand verkeer. In datacenters helpt dit de stress op switches te verlichten die MAC-adressen van soms kortstondige containers moeten leren. L2bridge-netwerken kunnen op twee verschillende manieren worden geconfigureerd:

  1. L2bridge-netwerk is geconfigureerd met hetzelfde IP-subnet als de containerhost
  2. L2bridge-netwerk is geconfigureerd met een nieuw aangepast IP-subnet

In configuratie 2 moeten gebruikers een eindpunt toevoegen aan het hostnetwerkcompartiment dat fungeert als gateway en routeringsmogelijkheden configureren voor het aangewezen voorvoegsel.

Een l2bridge-netwerk maken

Een nieuw l2bridge-netwerk maken met subnet 10.244.0.0/24, gateway 10.244.0.1, DNS-server 10.244.0.7 en 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

Tip

L2bridge-netwerken zijn zeer programmeerbaar; Meer informatie over het configureren van l2bridge vindt u hier .

L2tunnel-netwerkstuurprogramma

Het maken is identiek aan l2bridge, maar dit stuurprogramma alleen mag worden gebruikt in een Microsoft Cloud Stack (Azure). Het enige verschil ten opzichte van l2bridge is dat al het containerverkeer wordt verzonden naar de virtualisatiehost waarop SDN-beleid wordt toegepast, waardoor functies zoals Azure-netwerkbeveiligingsgroepen voor containers worden ingeschakeld.

Netwerktopologieën en IPAM

In de onderstaande tabel ziet u hoe de netwerkverbinding wordt geleverd voor interne (container-naar-container) en externe verbindingen voor elk netwerkstuurprogramma.

Netwerkmodi/Docker-stuurprogramma's

Docker Windows-netwerkstuurprogramma Typische toepassingen Container-naar-container (één knooppunt) Container-naar-extern (één knooppunt + meerdere knooppunten) Container-naar-container (meerdere knooppunten)
NAT (Default) Goed voor ontwikkelaars
  • Hetzelfde subnet: overbrugde verbinding via Hyper-V virtuele switch
  • Kruis-subnet: niet ondersteund (slechts één intern NAT-voorvoegsel)
Gerouteerd via beheer-vNIC (gebonden aan WinNAT) Niet rechtstreeks ondersteund: vereist het beschikbaar maken van poorten via host
Transparante Geschikt voor ontwikkelaars of kleine implementaties
  • Hetzelfde subnet: overbrugde verbinding via Hyper-V virtuele switch
  • Cross-subnet: gerouteerd via containerhost
Gerouteerd via containerhost met directe toegang tot (fysieke) netwerkadapter Gerouteerd via containerhost met directe toegang tot (fysieke) netwerkadapter
Overlay Geschikt voor meerdere knooppunten; vereist voor Docker Swarm, beschikbaar in Kubernetes
  • Hetzelfde subnet: overbrugde verbinding via Hyper-V virtuele switch
  • Cross Subnet: Netwerkverkeer wordt ingekapseld en gerouteerd via Mgmt vNIC
Niet rechtstreeks ondersteund. Hiervoor is een tweede containereindpunt vereist dat is gekoppeld aan het NAT-netwerk in Windows Server 2016 of VFP NAT-regel op Windows Server 2019. Hetzelfde/cross-subnet: netwerkverkeer wordt ingekapseld met behulp van VXLAN en gerouteerd via mgmt vNIC
L2Bridge Wordt gebruikt voor Kubernetes en Microsoft SDN
  • Hetzelfde subnet: overbrugde verbinding via virtuele switch Hyper-V
  • Cross Subnet: Container MAC-adres herschreven bij binnenkomend en uitgaand verkeer en vervolgens gerouteerd
Mac-adres van container opnieuw geschreven bij inkomomst en vertrek
  • Hetzelfde subnet: overbrugde verbinding
  • Cross Subnet: gerouteerd via Mgmt vNIC op WSv1809 en hoger
L2Tunnel Alleen Azure Hetzelfde/cross-subnet: doorgevoerd naar de Hyper-V virtuele switch van de fysieke host waar het beleid wordt toegepast Verkeer moet via de gateway van het virtuele Azure-netwerk gaan Zelfde/Cross Subnet: Teruggekoppeld naar de Hyper-V virtuele switch van de fysieke host waar het beleid wordt toegepast

IPAM

IP-adressen worden voor elk netwerkdriver anders gealloceerd en toegewezen. Windows maakt gebruik van de Host Networking Service (HNS) om IPAM te bieden voor het NAT-stuurprogramma en werkt met Docker Swarm Mode (interne KVS) om IPAM te bieden voor overlay. Alle andere netwerkstuurprogramma's gebruiken een extern IPAM.

Netwerkmodus/stuurprogramma IPAM
NAT Dynamische IP-toewijzing en -toekenning door Host Networking Service (HNS) van intern NAT-subnetprefix
Doorzichtig Statische of dynamische IP-toewijzing en -toekenning (met behulp van een externe DHCP-server) van IP-adressen binnen het netwerkvoorvoegsel van de containerhost
Overlappen Dynamische IP-toewijzing van door Docker Engine Swarm Mode beheerde voorvoegsels en toewijzing via HNS
L2Bridge Dynamische IP-toewijzing en -toekenning door Host Networking Service (HNS) vanaf het opgegeven subnetprefix
L2Tunnel Alleen Azure - Dynamische IP-toekenning en -toewijzing vanuit de plug-in

Serviceontdekking

Servicedetectie wordt alleen ondersteund voor bepaalde Windows-netwerkstuurprogramma's.

Stuurprogrammanaam Detectie van lokale services Globale servicedetectie
Nat JA JA met Docker EE
overlappen JA JA met Docker EE of kube-dns
doorzichtig NEE NEE
l2bridge JA met kube-dns JA met kube-dns