Windows-Containernetzwerk
Gilt für: Windows Server 2022, Windows Server 2019, Windows Server 2016
Wichtig
Unter Docker Container Networking finden Sie allgemeine Docker-Netzwerkbefehle, -Optionen und -Syntax. Mit Ausnahme aller Fälle, die in nicht unterstützten Features und Netzwerkoptionen beschrieben werden, werden alle Docker-Netzwerkbefehle unter Windows mit der gleichen Syntax wie unter Linux unterstützt. Die Windows- und Linux-Netzwerkstapel unterscheiden sich jedoch, und daher werden Sie feststellen, ifconfig
dass einige Linux-Netzwerkbefehle (z. B. ) unter Windows nicht unterstützt werden.
Grundlegende Netzwerkarchitektur
Dieses Thema bietet eine Übersicht darüber, wie Docker Hostnetzwerke unter Windows erstellt und verwaltet. Windows-Container funktionieren in Bezug auf Netzwerke ähnlich wie virtuelle Computer. Jeder Container verfügt über einen virtuellen Netzwerkadapter (vNIC). der mit einem virtuellen Hyper-V-Switch (vSwitch) verbunden ist. Windows unterstützt fünf verschiedene Netzwerktreiber oder -modi , die über Docker erstellt werden können: nat, overlay, transparent, l2bridge und l2tunnel. Sie sollten den Netzwerktreiber auswählen, der Ihren Bedürfnissen im Hinblick auf Ihre physische Netzwerkinfrastruktur und die Netzwerkanforderungen (Netzwerk mit einem oder mehreren Hosts) am besten gerecht wird.
Bei der ersten Ausführung der Docker-Engine wird ein NAT-Standardnetzwerk namens "nat" erstellt, das einen internen vSwitch und eine Windows-Komponente mit dem Namen WinNAT
verwendet. Wenn auf dem Host bereits externe vSwitches vorhanden sind, die über PowerShell oder Hyper-V-Manager erstellt wurden, sind diese auch für Docker mit dem transparenten Netzwerktreiber verfügbar und können beim Ausführen des docker network ls
Befehls angezeigt werden.
- Ein interner vSwitch ist nicht direkt mit einem Netzwerkadapter auf dem Containerhost verbunden.
- Ein externer vSwitch ist einer, der direkt mit einem Netzwerkadapter auf dem Containerhost verbunden ist.
Das NAT-Netzwerk ist das Standardnetzwerk bei Containern, die unter Windows ausgeführt werden. Container, die unter Windows ohne Flags oder Argumente zur Implementierung bestimmter Konfigurationen ausgeführt werden, werden an das standardmäßige NAT-Netzwerk angeschlossen und einer IP-Adresse aus dem NAT-Netzwerk aus dessen internen Präfix-IP-Bereich zugewiesen. Der verwendete interne IP-Standardpräfix für NAT ist 172.16.0.0/16.
Verwaltung des Containermetzwerks mit dem Host Network Service (HNS)
Der Hostnetzwerkdienst (Host Networking Service, HNS) und der Host compute Service (HCS) arbeiten zusammen, um Container zu erstellen und Endpunkte an ein Netzwerk anzufügen. Sie können mit HNS über das HNS PowerShell-Hilfsmodul interagieren.
Erstellen eines Netzwerks
- HNS erstellt einen virtuellen Hyper-V-Switch für jedes Netzwerk.
- HNS erstellt NAT- und IP-Pools nach Bedarf
Endpunkterstellung
- HNS erstellt Einen Netzwerknamespace pro Containerendpunkt
- HNS/HCS platziert v(m)NIC im Netzwerknamespace
- HNS erstellt (vSwitch)-Ports
- HNS weist IP-Adresse, DNS-Informationen, Routen usw. zu. (unterliegt dem Netzwerkmodus) zum Endpunkt
Richtlinienerstellung
- Für das NAT-Netzwerk (Network Address Translation) erstellt HNS die WinNAT-Portweiterleitungsregeln und -Zuordnungen mit den entsprechenden ALLOW-Regeln der Windows-Firewall.
- Für alle anderen Netzwerke verwendet HNS die Virtuelle Filterplattform (VFP) für die Richtlinienerstellung, die Lastenausgleich, ACLs und Kapselung umfasst. Weitere Informationen zu HNS-APIs und dem Schema finden Sie unter Host Compute Network (HCN)-Dienst-API für VMs und Container.
Nicht unterstützte Features und Netzwerkoptionen
Die folgenden Netzwerkoptionen werden derzeit NICHT unter Windows unterstützt:
- Ab Windows Server 2022 unterstützen An l2bridge-Netzwerke angefügte Windows-Container den IPv6-Stapel. Windows-Container, die an NAT- und Overlaynetzwerke angefügt sind, unterstützen jedoch keine Kommunikation über den IPv6-Stapel.
- Verschlüsselte Containerkommunikation über IPsec.
- Netzwerk im Hostmodus .
- Netzwerkbetrieb in virtualisierter Azure-Infrastruktur über den transparenten Netzwerktreiber.
Befehl | Nicht unterstützte Option |
---|---|
docker run |
--ip6 , --dns-option |
docker network create |
--aux-address , --internal , --ip-range , --ipam-driver , --ipam-opt , --ipv6 , --opt encrypted |