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.16
en 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:
- L2bridge-netwerk is geconfigureerd met hetzelfde IP-subnet als de containerhost
- 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 |
|
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 |
|
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 |
|
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 |
|
Mac-adres van container opnieuw geschreven bij inkomomst en vertrek |
|
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 |