kalafoto - stock.adobe.com

Docker unter Windows: Die Konfiguration des Netzwerks

Die Standardeinstellung für Netzwerke bei Windows-Containern ist NAT. Admins können aber benutzerdefinierte Netzwerke festlegen, wenn dies für Verbindungen erforderlich ist.

Container unter Windows verwenden virtuelle und/oder physische Host-Netzwerke, um Netzwerkfunktionalität für Anwendungen bereitzustellen. Dabei lässt sich die Netzwerkfunktion an sich ähnlich handhaben wie bei virtuellen Maschinen (VMs), aber die Netzwerkarchitektur der Container unterscheidet sich davon.

Jeder Windows-Container verfügt über einen virtuellen Netzwerkadapter, der wiederum auf dem Netzwerktreiber des Container-Systems aufsetzt. Der virtuelle Netzwerkadapter ist mit einem virtuellen Hyper-V-Switch auf dem Host-System verbunden. Unter Windows stehen in Sachen Container folgende Typen von Netzwerktreibern zur Verfügung. NAT (Network Adress Translation), transparent, Overlay, l2bridge und l2tunnel. Daraus gilt es den Treiber auszuwählen, der sich am besten für die eigene Infrastruktur eignet. Wer Networking Bridging implementieren möchte, entscheidet sich für l2bridge. Wer NAT umsetzen möchte, entscheidet sich entsprechend für den NAT-Treiber. Ausführliche Informationen zu den Treibertypen finden sich hier bei Microsoft.

NAT für Windows-Container

Beim Anlegen eines Windows-Containers wird standardmäßig NAT umgesetzt. Will heißen, es wird ein NAT-Netzwerk erstellt, das einen internen vSwitch und WinNAT verwendet. Das System verbindet den mit dem NAT-Treiber erstellten Container zu einem internen vSwitch und ordnet ihn dem WinNAT-Treiber zu.

Ein interner vSwitch ist nicht direkt mit einem Netzwerkadapter auf dem Host des Containers verbunden. Der WinNAT-Treiber ist dafür verantwortlich, die Kommunikation vom Container-NAT-Treiber zum Windows-Host-Computer beziehungswiese außerhalb des Containers weiterzuleiten. Alle Netzwerke, die auf dem Host-Computer angelegt werden, sind auch für den Windows-Container verfügbar. Um die verfügbaren Netzwerke in einem Container aufzulisten, führen Sie den Befehle docker network ls aus.

Die innerhalb eines Containers verfügbaren Netzwerk lassen sich einfach auflisten.
Abbildung 1: Die innerhalb eines Containers verfügbaren Netzwerk lassen sich einfach auflisten.

Wie beschrieben, wird beim Start der Docker Engine NAT implementiert. Anschließend wendet das System den Netzwerkprozess von Docker auf den NAT-Netzwerktreiber und weist ihm automatisch eine IP-Adresse zu. Das hier genutzte interne IP-Standardpräfix für NAT ist 172.16.0.0/16.

Container über transparente Netzwerke verbinden

Wenn die Anwendungen des Containers eine Verbindung zu entfernten Endpunkten herstellen müssen, beispielsweise zu Anwendungen auf anderen Host-Computern, muss eine transparente Netzwerkverbindung erstellt werden. Dies wird in diesem Zusammenhang manchmal auch als benutzerdefiniertes Netzwerk bezeichnet. Hierbei handelt es sich um Container, die mit einem NAT-Treiber erstellt wurden und direkt über einen externen Hyper-V-Switch mit einem physischen Netzwerk verbunden werden. Ein externer vSwitch ist direkt mit dem Netzwerkadapter auf dem Host des Containers verbunden.

Das entsprechende Netzwerk kann mit dem Befehl docker create network auf dem Windows-Hostcomputer angelegt werden. Der Parameter -d gibt an, welcher Netzwerktreiber verwendet werden soll und welcher Netzwerktyp angelegt werden soll. Im Folgenden zeigen wir, wie ein transparentes Netzwerk für DHCP als auch für Nicht-DHCP-Netzwerk anlegt werden kann.

Um ein DHCP-fähiges Netzwerk zu erstellen, geben Sie folgenden Docker-Befehl ein:

docker network create –d transparent dhcplan

Nach der Eingabe des Befehls sollten Sie beim nächsten Auflisten der verfügbaren Netzwerke mit docker network ls ein dhcplan-Netzwerk sehen.

Im nächsten Schritt erfolgt die Konfiguration, damit das Container-Image auf Daten außerhalb des Computers zugreifen oder sich bei Bedarf mit einem entfernten Endpunkt verbinden kann.

docker run –it –network=dhcplan Microsoft/windowsservercore

In dem Befehl wird network=dhcplan als benutzerdefiniertes Netzwerk für das Container-Image Microsoft/windowsservercore angegeben.

Für Nicht-DHCP-Netzwerke müssen neben dem Namen des transparenten Netzwerks noch Subnetz und Gateway angegeben werden:

docker network create -d transparent --subnet=10.88.28.0/24 --gateway=10.88.28.1 nondhcplan

Nächste Schritte

Container unter Windows nutzen

Docker, Windows Server und die Sicherheit

Container-Images sicher einsetzen

Erfahren Sie mehr über Containervirtualisierung