Erfahren Sie, wie Sie grund­le­gen­de und er­wei­ter­te Netz­werk­tools zur Ver­wal­tung von Docker-Con­tai­nern verwenden können. Die Netz­werk­funk­ti­on er­mög­licht es Benutzern, ihre eigenen Netzwerke zu de­fi­nie­ren und Container mit ihnen zu verbinden.

Sie können ein Netzwerk auf einem einzelnen oder aus mehreren Hosts mit der Docker-Netzwerk-Funktion erstellen. Dieser Artikel behandelt die Ver­net­zung von Docker-Con­tai­nern auf einem einzelnen Host. In­for­ma­tio­nen und An­wei­sun­gen zur Ver­net­zung von Docker-Con­tai­nern über mehrere Hosts hinweg finden Sie in unserem Artikel zu diesem Thema.

An­for­de­run­gen

  • IONOS Linux Cloud Server
  • Docker wurde auf Ihrem System in­stal­liert und läuft dort.
Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Sicheres Arbeiten mit Docker ohne Sudo

Der Docker-Daemon läuft als root, was bedeutet, dass Benutzer sudo verwenden müssen, um Docker-Befehle aus­zu­füh­ren.

Um nicht für jeden Docker-Befehl sudo verwenden zu müssen, fügen Sie einfach Ihre Benutzer mit folgendem Befehl zur Docker-Gruppe hinzu:

usermod -aG docker [username]

Wenn Sie bei­spiels­wei­se den Benutzer jdoe zur Docker-Gruppe hin­zu­fü­gen, muss dieser Benutzer nicht mehr sudo für jeden Docker-Befehl verwenden. Um den Benutzer zur Gruppe hin­zu­zu­fü­gen, verwenden Sie den Befehl:

usermod -aG docker jdoe

Dockers Standard-Netzwerke

Jede Docker-In­stal­la­ti­on erstellt au­to­ma­tisch drei Standard-Netzwerke. Sie können diese Netzwerke mit folgendem Befehl auflisten:

sudo docker network ls

Die Ausgabe dieses Befehls sieht in etwa so aus:

Das Bridge-Netzwerk ist das Stan­dard­netz­werk. Wenn nicht anders angegeben, ist Bridge das Netzwerk, in dem Docker jeden neuen Container startet.

Docker-Netzwerk: Bridge vs. Overlay

Docker un­ter­stützt nativ zwei Arten von Netz­wer­ken: Bridge und Overlay.

  • Ein Bridge-Netzwerk ist auf einen einzelnen Host (Server) be­schränkt.
  • Ein Overlay-Netzwerk kann mehrere Hosts (Server) umfassen.

Da Overlay-Netzwerke kom­pli­zier­ter sind, werden wir sie in einem weiteren Artikel behandeln.

Über­prü­fen eines Netzwerks

Die Über­prü­fung eines Docker-Netzwerks gibt In­for­ma­tio­nen über dieses Netzwerk zurück, ein­schließ­lich der In­for­ma­tio­nen darüber, welche Container an das Netzwerk an­ge­schlos­sen sind, und ihrer IP-Adressen. Dies ist ein wert­vol­les Test­werk­zeug und eine einfache Mög­lich­keit, die IP-Adresse Ihres Con­tai­ners zu finden.

Sie können ein Netzwerk mit folgendem Befehl in­spi­zie­ren:

sudo docker network inspect [network name]

Um bei­spiels­wei­se das Bridge-Netzwerk zu in­spi­zie­ren, lautet der Befehl:

sudo docker network inspect bridge

Die Ausgabe dieses Befehls sieht in etwa so aus:

Wie Sie im obigen Screen­shot sehen können, läuft auf diesem Bridge-Netzwerk nur ein Container. Der Name des Con­tai­ners lautet test_centos_container und die ihm zu­ge­wie­se­ne IP-Adresse lautet 172.17.0.0.3.

Hinweis

Container können nur mit­ein­an­der kom­mu­ni­zie­ren, wenn sie im selben Netzwerk laufen. Wenn Sie bei­spiels­wei­se eine Web­an­wen­dung in einem Container hatten, die sich mit einer Datenbank in einem anderen Container verbinden musste, müssten sich diese beiden Container im selben Netzwerk befinden.

Erstellen eines neuen Bridge-Netzwerks

Um ein eigenes Netzwerk zu erstellen, lautet der Befehl:

sudo docker network create -d [driver] [new network name]

Mit dem Flag -d können Sie den Treiber für das Netzwerk angeben. Für ein Bridge-Netzwerk verwenden Sie den Bridge-Treiber.

Um bei­spiels­wei­se ein Bridge-Netzwerk namens new_test_network zu erstellen, verwenden Sie den Befehl:

sudo docker network create -d bridge new_test_network

Sie können sudo docker network ls verwenden, um die Netzwerke auf Ihrem Host auf­zu­lis­ten und zu über­prü­fen, ob Ihr Netzwerk erstellt wurde.

Starten eines Con­tai­ners und Hin­zu­fü­gen desselben zu einem Netzwerk

Wenn Sie beim Starten eines Con­tai­ners kein Netzwerk angeben, wird er au­to­ma­tisch dem Standard-Bridge-Netzwerk hin­zu­ge­fügt.

Um einen Container zu starten und ihn zu einem be­stimm­ten Netzwerk hin­zu­zu­fü­gen, verwenden Sie den Befehl:

sudo docker run -it --net=[network name] --name [container name] [image]

Um bei­spiels­wei­se einen Container mit dem Namen test_python_container aus dem Python-Image zu starten und ihn zu einem Netzwerk mit dem Namen new_test_network hin­zu­zu­fü­gen, lautet der Befehl:

sudo docker run -it --net=new_test_network --name test_centos_container centos

Verwenden Sie STRG-p STRG-q, um den Container zu verlassen.

Sie können sudo docker network inspect [network name] verwenden, um das Netzwerk zu über­prü­fen und si­cher­zu­stel­len, dass der Container angehängt ist.

Hin­zu­fü­gen eines laufenden Con­tai­ners zu einem Netzwerk

Mit folgendem Befehl können Sie einen laufenden Container zu einem Netzwerk hin­zu­fü­gen:

sudo docker network connect [network name] [container name]

Um bei­spiels­wei­se einen laufenden Container namens test_centos_container zu einem Netzwerk namens another_test_network hin­zu­zu­fü­gen, lautet der Befehl:

sudo docker network connect another_test_network test_centos_container

Sie können sudo docker network inspect[network name] verwenden, um das Netzwerk zu über­prü­fen und si­cher­zu­stel­len, dass der Container angehängt ist.

Hinweis

Mit Docker können Sie Container zu mehreren Netz­wer­ken hin­zu­fü­gen. Es ist nicht er­for­der­lich, einen Container von einem Netzwerk zu trennen, bevor er zu einem anderen hin­zu­ge­fügt wird.

Trennen eines Con­tai­ners von einem Netzwerk

Um einen Container von einem Netzwerk zu trennen, verwenden Sie den Befehl:

sudo docker network disconnect [network name] [container ID or name]

Um bei­spiels­wei­se einen Container mit dem Namen test_centos_container vom neuen_test_network-Netzwerk zu trennen, lautet der Befehl:

sudo docker network disconnect new_test_network test_centos_container

Sie können den Befehl sudo docker network inspect [network name] verwenden, um das Netzwerk zu über­prü­fen und fest­zu­stel­len, ob der Container getrennt wurde.

Hinweis

Mit dem Docker können Sie Container zu mehreren Netz­wer­ken hin­zu­fü­gen. Es ist nicht er­for­der­lich, einen Container von einem Netzwerk zu trennen, bevor er zu einem anderen hin­zu­ge­fügt wird.

Löschen eines Netzwerks

Hinweis

Sie können die Standard-Netzwerke, die Docker beim Start erstellt, nicht löschen.

Nachdem alle Container, die zu einem Netzwerk hin­zu­ge­fügt wurden, gestoppt oder getrennt wurden, können Sie das Netzwerk mit folgendem Befehl löschen:

sudo docker network rm [network ID or name]

Um bei­spiels­wei­se das Netzwerk new_test_network zu entfernen, lautet der Befehl:

sudo docker network rm new_test_network

Sie können mit dem Befehl sudo docker network ls über­prü­fen, ob das Netzwerk entfernt wurde.

Beispiel: Ping zwischen zwei Con­tai­nern im gleichen Netzwerk

Für dieses Beispiel werden wir ein be­nut­zer­de­fi­nier­tes Bridge-Netzwerk erstellen, zwei Container in diesem Netzwerk starten, an den ping_sender-Container anhängen und von dort aus den anderen Container ping_receiver pingen.

Hinweis

In diesem Beispiel wird das of­fi­zi­el­le CentOS 7-Image centos verwendet, das Sie mit folgendem Befehl von der Docker-Website her­un­ter­la­den können:

sudo docker pull centos

Wenn Sie es vorziehen, Ubuntu zu verwenden, ersetzen Sie statt­des­sen einfach ein Ubuntu-Image.

Erstellen Sie zunächst ein Bridge-Netzwerk namens ping_test_network mit dem Befehl:

sudo docker network create -d bridge ping_test_network

Wenn Sie Ubuntu be­vor­zu­gen, verwenden Sie einfach ein Ubuntu-Image und starten Sie dann einen Container mit dem Namen ping_receiver und hängen Sie diesen mit folgendem Befehl an das Bridge-Netzwerk ping_test_network an:

Erstellen Sie zunächst ein Bridge-Netzwerk namens ping_test_network mit dem Befehl:

sudo docker run -it --net=ping_test_network  --name ping_receiver centos /bin/bash

Verwenden Sie STRG-p STRG-q, um den ping_receiver-Container zu verlassen.

In­spi­zie­ren Sie das ping_test_network mit folgendem Befehl, um die IP-Adresse des ping_receiver-Con­tai­ners zu erhalten:

sudo docker network inspect ping_test_network

Notieren Sie sich die IP-Adresse des Con­tai­ners.

In diesem Fall lautet die IP-Adresse 172.19.0.2.

Starten Sie einen Container namens ping_sender und hängen Sie ihn mit folgendem Befehl an das ping_test_network Bridge-Netzwerk an:

sudo docker run -it --net=ping_test_network  --name ping_sender centos bin/bash

Sobald Sie mit dem Container verbunden sind und eine Ein­ga­be­auf­for­de­rung erscheint, rufen Sie den anderen Container mit folgendem Befehl auf:

ping [IP address of ping_receiver]

In diesem Fall werden wir die IP-Adresse 172.19.0.0.2 pingen. Die Er­geb­nis­se eines er­folg­rei­chen Pings werden in etwa so aussehen:

Verlassen Sie Ping mit STRG-c und verwenden Sie dann STRG-p STRG-q, um den Container zu verlassen.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kos­ten­güns­ti­ge vCPUs und leis­tungs­star­ke de­di­zier­te Cores
  • Höchste Fle­xi­bi­li­tät ohne Min­dest­ver­trags­lauf­zeit
  • Inklusive 24/7 Experten-Support
Zum Hauptmenü