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, ifconfigdass 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.

Veranschaulicht den Windows-Netzwerkstapel

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 WinNATverwendet. 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.

Veranschaulicht den PowerShell-Befehl

  • 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.

Veranschaulicht den Get-VMSwitch PowerShell-Befehl

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.

Veranschaulicht den HNS-Verwaltungsstapel

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