Treiber für Windows-Container NetzwerkWindows container network drivers

Zusätzlich zur Nutzung des standardmäßigen NAT-Netzwerks, das von Docker unter Windows erstellt wurde, können Benutzer benutzerdefinierte Containernetzwerke festlegen.In addition to leveraging the default 'nat' network created by Docker on Windows, users can define custom container networks. Benutzerdefinierte Netzwerke können mithilfe des Befehls "docker CLI" erstellt werden docker network create -d <NETWORK DRIVER TYPE> <NAME> .User-defined networks can be created using the Docker CLI docker network create -d <NETWORK DRIVER TYPE> <NAME> command. Unter Windows stehen folgende Netzwerktreibertypen zur Verfügung:On Windows, the following network driver types are available:

NAT-NetzwerktreiberNAT network driver

Container, die mit einem Netzwerk verbunden sind, das mit dem NAT-Treiber erstellt wurde, werden mit einem internen Hyper-V-Switch verbunden und erhalten eine IP-Adresse vom benutzerdefinierten --subnet IP-Präfix ().Containers attached to a network created with the 'nat' driver will be connected to an internal Hyper-V switch and receive an IP address from the user-specified (--subnet) IP prefix. Portweiterleitung/-zuordnung vom Containerhost zu Containerendpunkten wird unterstützt.Port forwarding / mapping from the container host to container endpoints is supported.

Tipp

Sie können das Subnetz, das vom NAT-Standard Netzwerk verwendet wird, über die fixed-cidr Einstellung in der docker-Daemon-Konfigurationsdateianpassen.It is possible to customize the subnet used by the default 'nat' network via the fixed-cidr setting in the Docker daemon configuration file.

Hinweis

Auf Windows Server 2019 (oder höher) erstellte NAT-Netzwerke werden nach dem Neustart nicht mehr beibehalten.NAT networks created on Windows Server 2019 (or above) are no longer persisted after reboot.

Erstellen eines NAT-NetzwerksCreating a NAT network

So erstellen Sie ein neues NAT-Netzwerk mit einem Subnetz 10.244.0.0/24 :To create a new NAT network with subnet 10.244.0.0/24:

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

Transparenter NetzwerktreiberTransparent network driver

Container, die mit einem mit dem "transparenten"-Treiber erstellten Netzwerk verbunden sind, werden über einen externen Hyper-V-Switch direkt mit dem physischen Netzwerk verbunden.Containers attached to a network created with the 'transparent' driver will be directly connected to the physical network through an external Hyper-V switch. IPs aus dem physischen Netzwerk können mithilfe eines externen DHCP-Servers statisch (erfordert eine benutzerdefinierte --subnet-Option) oder dynamisch zugewiesen werden.IPs from the physical network can be assigned statically (requires user-specified --subnet option) or dynamically using an external DHCP server.

Hinweis

Aufgrund der folgenden Anforderung wird das Verbinden Ihrer Container Hosts über ein transparentes Netzwerk auf Azure-VMS nicht unterstützt.Due to the following requirement, connecting your container hosts over a transparent network is not supported on Azure VMs.

Erfordert Folgendes: Wenn dieser Modus in einem Virtualisierungsszenario (Container Host ist eine VM) verwendet wird, ist das Spoofing von Mac-Adressen erforderlich.Requires: When this mode is used in a virtualization scenario (container host is a VM) MAC address spoofing is required.

Erstellen eines transparenten NetzwerksCreating a transparent network

So erstellen Sie ein neues transparentes Netzwerk mit Subnetz 10.244.0.0/24 , Gateway 10.244.0.1 , DNS 10.244.0.7 -Server und VLAN-ID 7 :To create a new transparent network with subnet 10.244.0.0/24, gateway 10.244.0.1, DNS server 10.244.0.7 and 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

Überlagerungs NetzwerktreiberOverlay network driver

Von containerorchestratoren wie docker Swarm und Kubernetes verwendete Container, die an ein Überlagerungs Netzwerk angeschlossen sind, können mit anderen Containern kommunizieren, die über mehrere Container Hosts an dasselbe Netzwerk angeschlossen sind.Popularly used by containers orchestrators such as Docker Swarm and Kubernetes, containers attached to an overlay network can communicate with other containers attached to the same network across multiple container hosts. Jedes Überlagerungs Netzwerk wird mit einem eigenen IP-Subnetz erstellt, das durch ein privates IP-Präfix definiert ist.Each overlay network is created with its own IP subnet, defined by a private IP prefix. Der Überlagerungs Netzwerktreiber verwendet die vxlan-Kapselung zum Erreichen von Netzwerk Datenverkehr zwischen Mandanten Container Netzwerken und ermöglicht die erneute Verwendung von IP-Adressen in Überlagerungs Netzwerken.The overlay network driver uses VXLAN encapsulation to achieve network traffic isolation between tenant container networks and enables re-using IP addresses across overlay networks.

Erfordert: Stellen Sie sicher, dass Ihre Umgebung diese erforderlichen Voraussetzungen zum Erstellen von Überlagerungs Netzwerken erfüllt.Requires: Make sure your environment satisfies these required prerequisites for creating overlay networks.

Erfordert: auf Windows Server 2019 ist hierfür KB4489899erforderlich.Requires: On Windows Server 2019, this requires KB4489899.

Erfordert: auf Windows Server 2016 ist hierfür KB4015217erforderlich.Requires: On Windows Server 2016, this requires KB4015217.

Hinweis

Unter Windows Server 2019 und höher nutzen Überlagerungs Netzwerke, die von Docker Swarm erstellt wurden, VFP-NAT-Regeln für ausgehende Verbindungen.On Windows Server 2019 and above, overlay networks created by Docker Swarm leverage VFP NAT rules for outbound connectivity. Dies bedeutet, dass ein bestimmter Container 1 IP-Adresse erhält.This means that a given container receives 1 IP address. Dies bedeutet auch, dass ICMP-basierte Tools wie ping oder Test-NetConnection mit ihren TCP/UDP-Optionen in Debuggingsituationen konfiguriert werden sollten.It also means that ICMP-based tools such as ping or Test-NetConnection should be configured using their TCP/UDP options in debugging situations.

Erstellen eines Überlagerungs NetzwerksCreating a overlay network

So erstellen Sie ein neues Überlagerungs Netzwerk mit Subnetz 10.244.0.0/24 , DNS 168.63.129.16 -Server und vsid 4096 :To create a new overlay network with subnet 10.244.0.0/24, DNS server 168.63.129.16, and 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 NetzwerktreiberL2bridge network driver

Container, die mit einem Netzwerk verbunden sind, das mit dem Treiber "l2bridge" erstellt wurde, werden über einen externen Hyper-V-Switch mit dem physischen Netzwerk verbunden.Containers attached to a network created with the 'l2bridge' driver will be connected to the physical network through an external Hyper-V switch. In l2bridge hat der Netzwerk Datenverkehr des Containers die gleiche Mac-Adresse wie der Host, da der Vorgang für die Übersetzung der Layer-2-Adressübersetzung (Mac Re-Write) bei eingehenden und ausgehenden Daten erfolgt.In l2bridge, container network traffic will have the same MAC address as the host due to Layer-2 address translation (MAC re-write) operation on ingress and egress. In Rechenzentren trägt dies zu einer Verringerung der Belastung von Switches bei, die Mac-Adressen von manchmal kurzlebigen Containern erlernen müssen.In datacenters, this helps alleviate the stress on switches having to learn MAC addresses of sometimes short-lived containers. L2bridge-Netzwerke können auf zwei verschiedene Arten konfiguriert werden:L2bridge networks can be configured in 2 different ways:

  1. L2bridge Network ist mit dem gleichen IP-Subnetz wie der Container Host konfiguriert.L2bridge network is configured with the same IP subnet as the container host
  2. L2bridge Network ist mit einem neuen benutzerdefinierten IP-Subnetz konfiguriert.L2bridge network is configured with a new custom IP subnet

In Configuration 2 müssen Benutzer einen Endpunkt auf dem Host Netzwerk Depot hinzufügen, das als Gateway fungiert, und Routing Funktionen für das angegebene Präfix konfigurieren.In configuration 2 users will need to add a endpoint on the host network compartment that acts as a gateway and configure routing capabilities for the designated prefix.

Erstellen eines l2bridge-NetzwerksCreating a l2bridge network

So erstellen Sie ein neues l2bridge-Netzwerk mit Subnetz 10.244.0.0/24 , Gateway 10.244.0.1 , DNS 10.244.0.7 -Server und VLAN-ID 7:To create a new l2bridge network with subnet 10.244.0.0/24, gateway 10.244.0.1, DNS server 10.244.0.7 and 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_transparent

Tipp

L2bridge-Netzwerke sind hochgradig programmierbar. Weitere Informationen zum Konfigurieren von l2bridge finden Sie hier.L2bridge networks are highly programmable; More details on how to configure l2bridge can be found here.

L2tunnel NetzwerktreiberL2tunnel network driver

Die Erstellung ist identisch mit l2bridge, dieser Treiber sollte jedoch nur in einem Microsoft Cloud Stapel (Azure) verwendet werden.Creation is identical to l2bridge, however this driver should only be used in a Microsoft Cloud Stack (Azure). Der einzige Unterschied gegenüber l2bridge besteht darin, dass der gesamte Container Datenverkehr an den Virtualisierungshost gesendet wird, auf dem die Sdn-Richtlinie angewendet wird. Dadurch werden Features wie Azure-Netzwerk Sicherheitsgruppen für ContainerThe only difference over l2bridge is that all container traffic is sent to the virtualization host where SDN policy is applied, thereby enabling features such as Azure Network Security Groups for containers.

Netzwerktopologien und IPAMNetwork topologies and IPAM

Die folgende Tabelle zeigt, wie die Netzwerkkonnektivität für interne (Container-zu-Container) und externe Verbindungen für jeden Netzwerktreiber bereitgestellt wird.The table below shows how network connectivity is provided for internal (container-to-container) and external connections for each network driver.

Netzwerk Modi/docker-TreiberNetworking modes/Docker drivers

Docker-Windows-NetzwerktreiberDocker Windows Network Driver Typische VerwendungTypical uses Container-zu-Container (einzelner Knoten)Container-to-container (Single node) Container-zu-extern (einzelner Knoten + mehrere Knoten)Container-to-external (single node + multi-node) Container-zu-Container (mehrere Knoten)Container-to-container (multi-node)
NAT (Standard)NAT (Default) Gut für EntwicklerGood for Developers
  • Gleiches Subnetz: überbrückt Verbindung über den virtuellen Hyper-V-SwitchSame Subnet: Bridged connection through Hyper-V virtual switch
  • Cross-Subnetz: nicht unterstützt (nur ein internes NAT-Präfix)Cross subnet: Not supported (only one NAT internal prefix)
Weitergeleitet durch Verwaltungs-vNIC (an winnat gebunden)Routed through Management vNIC (bound to WinNAT) Nicht direkt unterstützt: erfordert das verfügbar machen von Ports über den HostNot directly supported: requires exposing ports through host
SichtigenTransparent Gute für Entwickler oder kleine bereit StellungenGood for Developers or small deployments
  • Gleiches Subnetz: überbrückt Verbindung über den virtuellen Hyper-V-SwitchSame Subnet: Bridged connection through Hyper-V virtual switch
  • Cross-Subnetz: weitergeleitet durch den Container HostCross Subnet: Routed through container host
Routing durch den Container Host mit direktem Zugriff auf (physischer) NetzwerkadapterRouted through container host with direct access to (physical) network adapter Routing durch den Container Host mit direktem Zugriff auf (physischer) NetzwerkadapterRouted through container host with direct access to (physical) network adapter
OverlayOverlay Gut für mehrere Knoten; erforderlich für docker Swarm, verfügbar in KubernetesGood for multi-node; required for Docker Swarm, available in Kubernetes
  • Gleiches Subnetz: überbrückt Verbindung über den virtuellen Hyper-V-SwitchSame Subnet: Bridged connection through Hyper-V virtual switch
  • Cross-Subnetz: Netzwerk Datenverkehr wird gekapselt und über Mgmt vNIC weitergeleitet.Cross Subnet: Network traffic is encapsulated and routed through Mgmt vNIC
Nicht direkt unterstützt: erfordert einen zweiten Container Endpunkt, der an das NAT-Netzwerk unter Windows Server 2016 oder VFP-NAT-Regel auf Windows Server 2019 angeschlossen ist.Not directly supported - requires second container endpoint attached to NAT network on Windows Server 2016 or VFP NAT rule on Windows Server 2019. Gleiches/Cross-Subnetz: Netzwerk Datenverkehr wird mithilfe von vxlan gekapselt und über Mgmt vNIC weitergeleitet.Same/Cross Subnet: Network traffic is encapsulated using VXLAN and routed through Mgmt vNIC
L2BridgeL2Bridge Verwendet für Kubernetes und Microsoft SdnUsed for Kubernetes and Microsoft SDN
  • Gleiches Subnetz: überbrückt Verbindung über den virtuellen Hyper-V-SwitchSame Subnet: Bridged connection through Hyper-V virtual switch
  • Cross-Subnetz: die Mac-Adresse für den Container wurde bei einem eingehenden und ausgehenden Datenverkehr neu geschrieben.Cross Subnet: Container MAC address re-written on ingress and egress and routed
Mac-Adresse für Container bei Eingang und Ausgang neu geschriebenContainer MAC address re-written on ingress and egress
  • Gleiches Subnetz: überbrückte VerbindungSame Subnet: Bridged connection
  • Cross-Subnetz: weitergeleitet über Mgmt vNIC auf WSv1809 und höherCross Subnet: routed through Mgmt vNIC on WSv1809 and above
L2TunnelL2Tunnel Nur AzureAzure only Identisch/Cross-Subnetz: an den virtuellen Hyper-V-Switch des physischen Hosts, an den die Richtlinie angewendet wird.Same/Cross Subnet: Hair-pinned to physical host's Hyper-V virtual switch to where policy is applied Datenverkehr muss über das Azure Virtual Network-Gateway geleitet werdenTraffic must go through Azure virtual network gateway Identisch/Cross-Subnetz: an den virtuellen Hyper-V-Switch des physischen Hosts, an den die Richtlinie angewendet wird.Same/Cross Subnet: Hair-pinned to physical host's Hyper-V virtual switch to where policy is applied

IPAMIPAM

IP-Adressen werden von jedem Netzwerktreiber unterschiedlich belegt und diesem zugewiesen.IP Addresses are allocated and assigned differently for each networking driver. Windows verwendet den Host-Netzwerkdienst (HNS), um dem NAT-Treiber IPAM bereitzustellen und arbeitet mit dem Docker-Schwarmmodus (interner KVS), um IPAM für die Überlagerung bereitzustellen.Windows uses the Host Networking Service (HNS) to provide IPAM for the nat driver and works with Docker Swarm Mode (internal KVS) to provide IPAM for overlay. Alle anderen Netzwerktreiber verwenden eine externe IPAM.All other network drivers use an external IPAM.

Netzwerkmodus/-TreiberNetworking Mode / Driver IPAMIPAM
NATNAT Dynamische IP-Zuweisung und Zuweisung durch den Host Netzwerkdienst (HNS) aus dem internen NAT-SubnetzpräfixDynamic IP allocation and assignment by Host Networking Service (HNS) from internal NAT subnet prefix
TransparentTransparent Statischer oder dynamischer (mit externer DHCP-Server) IP-Zuweisung und Zuweisung von IP-Adressen im Netzwerk Präfix des Container HostsStatic or dynamic (using external DHCP server) IP allocation and assignment from IP addresses within container host's network prefix
ÜberlagerungOverlay Dynamische IP-Zuordnung von verwalteten Präfixen und Zuweisungen der Docker-Engine Swarm-Modus durch HNSDynamic IP allocation from Docker Engine Swarm Mode managed prefixes and assignment through HNS
L2BridgeL2Bridge Dynamische IP-Zuordnung und Zuweisung durch den Host Netzwerkdienst (HNS) aus dem angegebenen SubnetzpräfixDynamic IP allocation and assignment by Host Networking Service (HNS) from provided subnet prefix
L2TunnelL2Tunnel Nur Azure: dynamische IP-Zuordnung und Zuweisung vom Plug-inAzure only - Dynamic IP allocation and assignment from plugin

DienstsucheService Discovery

Die Dienstermittlung wird nur für bestimmte Windows-Netzwerktreiber unterstützt.Service Discovery is only supported for certain Windows network drivers.

TreibernameDriver name Lokale DienstermittlungLocal Service Discovery Globale DienstermittlungGlobal Service Discovery
NATnat YESYES Ja mit docker EEYES with Docker EE
overlayoverlay YESYES Ja mit docker EE oder Kube-DNSYES with Docker EE or kube-dns
transparenttransparent NeinNO NeinNO
l2bridgel2bridge Ja mit Kube-DNSYES with kube-dns Ja mit Kube-DNSYES with kube-dns