Binkski - stock.adobe.com

Grundlagen und Tipps für die Docker-Vernetzung

Für Einsteiger kann die Vernetzung von Docker-Containern zur Herausforderung werden. Dieser Artikel erklärt Grundlagen und erste Schritte für den Aufbau des Netzwerks.

Container-Bereitstellung und -Management sind ohne den Aufbau eines verlässlichen Netzwerks nicht möglich. IT-Administratoren, die für die Betreuung des Docker-Netzwerks zuständig sind, müssen sich in ein komplexes Feld einarbeiten. Dieser Artikel stellt einige fundamentale Vorgehensweisen und Befehle vor, die beim Start helfen.

Im Folgenden geht es um die Grundlagen der Netzwerkkonfiguration von Docker. Dazu gehören Host- und Bridge-Netzwerke, das Auffinden bestehender Netze und ihrer Konfiguration und die Freigabe von Ports für die Kommunikation.

Docker-Host versus Bridge-Netzwerk

Docker kommuniziert über Netzwerkadressen und Ports. Innerhalb von Docker-Hosts werden dafür Host- oder Bridge-Verbindungen genutzt.

Beim Host-Networking sendet der Docker-Host alle Kommunikationsmeldungen über Named Pipes. Diese Methode kann allerdings ein erhöhtes Sicherheitsrisiko bedeuten, da der gesamte Traffic ohne Trennmechanismen über dieselben Container läuft.

Bei der zweiten Variante für Docker, dem Bridge-Netzwerk, wird dies vermieden, indem ein internes Netzwerk erstellt wird, das sich mit dem externen verbindet. Die Liste der verfügbaren Netzwerke ruft man mit dem Befehl docker network ls auf. Der Output sollte dem Beispiel aus Abbildung 1 entsprechen.

Abbildung 1: Liste der vorhandenen Docker-Netzwerke
Abbildung 1: Liste der vorhandenen Docker-Netzwerke

Hier sind unter anderem auch die zwei primären Netzwerkoptionen, nämlich Bridge und Host aufgeführt. Die Netzwerkkennungen erscheinen in der ersten Spalte, danach folgen der Netzwerkname, Treiber und unter Scope die Netzdomäne des Treibers. Zwar entsprechen in diesem Beispiel die Namen der Netze denen der Treiber, jedoch sollte man im normalen Gebrauch Doppelbenennungen zugunsten der Eindeutigkeit vermeiden.

Admins können zusätzliche Netze konfigurieren, auf denen sich der Datenverkehr zwischen bestimmten Containergruppen, deren Funktion einheitlich festgelegt wurde, bewegt. Netzwerkverbindungen lassen sich so nach Funktionstypen, wie dem Frontend-Webserver, segmentieren.

Mit einem Docker-Netzwerk arbeiten

Um die Netzwerkkonfiguration einschließlich des Host-Netzwerks, des Subnetzes und des Standard-Gateway zu sehen, verwendet man den Befehl docker network inspect.

Spezifische Informationen über Bridge-Netze findet docker network inspect bridge. Dieser Befehl gibt ist eine Liste einschlägiger Netzwerkinformationen aus (siehe Abbildung 2).

Abbildung 2: Informationen zum Bridge-Netzwerk
Abbildung 2: Informationen zum Bridge-Netzwerk

Erzeugt ein Administrator ein Docker-Image, verwendet dieses Image standardmäßig das Bridge-Netzwerk. Um einen bereits laufenden Docker-Container anzubinden, gibt man docker attach ein. Der Befehl verbindet das Administrationsterminal mit dem laufenden Docker-Container über Standard-Ein- und -Ausgabedatenströme (Input/Output oder I/O).

Konfigurationsbeispiel für ein Docker-Netzwerk

Zur Verdeutlichung weiterer Grundlagen für den Aufbau eines Netzwerkes, wird im Folgenden als Beispiel ein Ubuntu-Container im Netzwerk konfiguriert.

Als erstes gibt man folgenden Befehl am Host ein, um einen Basis-Ubuntu-Container zu installieren:

sudo docker run -itd ubuntu:latest

Hat das System sich mit dem Container verbunden, gibt man die untenstehenden Befehle ein, um den Paketindex zu aktualisieren und anschließend das Softwarepaket Net-Tools zu installieren. Die notwendigen IP-Informationen findet man auf dem Host, der in diesem Beispiel eine auf Docker basierende Ubuntu-Installation ist:

apt-get update

apt-get install net-tools

Nach der Installation des Pakets kann der Admin wie in Abbildung 3 auf grundlegende Verbindungsfunktionen, die IP-Adresskonfiguration und andere Aspekte des Netzwerk-Setups zugreifen.

Abbildung 3: Verfügbare Funktionen nach erfolgreicher Installation des Net-Tools-Pakets
Abbildung 3: Verfügbare Funktionen nach erfolgreicher Installation des Net-Tools-Pakets

Danach lässt sich ein neues Netzwerk auf diese Bridge aufbauen. Mit dem nächsten Befehl spezifiziert der Anwender den Treiber für das Netzwerkmanagement, der sich standardmäßig mit der Bridge verbindet.

docker network create --driver bridge newnet

Um das Netzwerk anzubinden und zu verwenden, gibt man den Netzwerktyp und -namen über die Befehlszeile ein, zum Beispiel:

docker run --network=newnet -itd ubuntu

Mit komplexeren Befehlsfolgen lassen sich auch mehrere Einstellungen gleichzeitig festlegen. Das folgende Beispiel stammt von der Docker-Website.

docker network create \
--driver=bridge \
--subnet=172.28.0.0/16 \
--ip-range=172.28.5.0/24 \
--gateway=172.28.5.254 \
mysuperbridgenet

Auf diese Weise kann der Admin Netzwerkdetails wie Subnetze und Gateways konfigurieren. Die gesamte Kommunikation läuft jedoch noch immer über den Host. Deshalb ist ein Mapping auf Host-Ebene für die gesamte externe Kommunikation erforderlich.

Die Funktion von Ports

Neben den IP-Adressen sind die Ports eine zentrale Komponente der Docker-Vernetzung. Um sich von einem logischen Netzwerk aus mit einem Docker-Image zu verbinden, um etwa HTTP oder HTTPS freizugeben, müssen diese Ports für die Außenwelt verfügbar sein. Dafür werden sie beim Start eines neuen Containers freigegeben, indem innerhalb des betreffenden Befehls das Netzwerk und der Port wie unten gezeigt angegeben werden. Dazu wird der Befehl network=newnet respektive -p80:80 verwendet und anschließend http ausgewählt:

docker run -itd --network=newnet -p 80:80 http

Nun öffnet man einen Webbrowser und navigiert zur IP-Adresse des Docker-Hosts. Ist er fehlerfrei konfiguriert, sollte er den HTTP-Willkommens-Bildschirm des Apache-Webservers anzeigen (Abbildung 4).

Abbildung 4: Willkommensseite des Apache-ServersAbbildung 4: Willkommensseite des Apache-Servers

Je nach den Anforderungen kann man mehrere Ports spezifizieren. So können Organisationen beispielsweise HTTP und HTTPS auf demselben Host verwenden.

Diese Grundlagen beziehen sich nur auf Arbeiten auf Host-Ebene. Wird das System auf mehr als einen Host erweitert, gibt es weiterführende Netzwerkoptionen, wie etwa Overlay-Netzwerke.

Sie beseitigen viele der manuellen Konfigurationsaufgaben, die auf der Ebene der Einzel-Hosts anfallen.

Nächste Schritte

Netzwerkkonfiguration in Docker mit Windows

Grundlagen beim Einsatz von Docker-Containern

Sicherheitskonzepte für die Containernutzung

Erfahren Sie mehr über Containervirtualisierung

ComputerWeekly.de

Close