Docker-Netzwerk: Ein Anfängerleitfaden

Hallo da draußen, zukünftige Docker-Meister! Ich freue mich sehr, Ihr Guide auf dieser aufregenden Reise in die Welt der Docker-Netzwerke zu sein. Als jemand, der seit Jahren Informatik unterrichtet, kann ich Ihnen sagen, dass das Verständnis von Docker-Netzwerken wie das Lernen, die belebten Straßen einer neuen Stadt zu navigieren, ist - es mag initially überwältigend erscheinen, aber sobald Sie den Dreh raus haben, werden Sie sich wie ein Einheimischer schnell bewegen!

Docker - Networking

Was ist Docker-Netzwerk?

Bevor wir uns den Details zuwenden, beginnen wir mit den Grundlagen. Docker-Netzwerke sind im Wesentlichen die Art und Weise, wie Docker-Container miteinander und mit der Außenwelt kommunizieren. Stellen Sie es sich wie das Postsystem für Ihre Container vor - es ist die Weise, wie sie Nachrichten und Daten senden und empfangen.

Auflisten aller Docker-Netzwerke

Lassen Sie uns unsere Abenteuerreise damit beginnen, zu lernen, wie man die in unserer Docker-Umgebung verfügbaren Netzwerke sieht. Es ist, als würde man eine Karte unserer neuen Stadt überprüfen, um zu sehen, welche Routen man nehmen kann.

Um alle Docker-Netzwerke aufzulisten, verwenden wir diesen einfachen Befehl:

docker network ls

Wenn Sie diesen Befehl ausführen, werden Sie eine Ausgabe ähnlich dieser sehen:

NETWORK ID     NAME      DRIVER    SCOPE
9f904ee27bf5   bridge    bridge    local
95e74588f40d   host      host      local
6dd90d006c9b   none      null      local

Lassen Sie uns das einmal auseinandernehmen:

  • NETWORK ID: Ein eindeutiger Identifier für jedes Netzwerk
  • NAME: Der Name des Netzwerks
  • DRIVER: Der verwendete Netzwerk-Treiber (wir werden später mehr darüber sprechen)
  • SCOPE: Der Umfang des Netzwerks (lokal für den Docker-Host oder Swarm)

Inspektion eines Docker-Netzwerks

Nun, da wir unsere Netzwerke sehen können, werfen wir einen genaueren Blick auf eines von ihnen. Es ist, als würde man auf eine bestimmte Straße auf unserer Karte zoomen.

Um ein Docker-Netzwerk zu inspizieren, verwenden wir:

docker network inspect [NETWORK NAME]

Zum Beispiel, lassen Sie uns das Standard-'bridge'-Netzwerk inspizieren:

docker network inspect bridge

Dieser Befehl wird eine Menge detaillierter Informationen über das Netzwerk im JSON-Format zurückgeben. Es ist, als würde man einen detaillierten Bericht über alles, was auf dieser Straße vor sich geht, erhalten - wer dort lebt, wie die Häuser aussehen, etc.

Erstellen Ihres eigenen neuen Netzwerks

Super, jetzt sind wir bereit, unsere eigene Straße zu bauen! Das Erstellen eines neuen Netzwerks in Docker ist erstaunlich einfach:

docker network create [OPTIONS] [NETWORK NAME]

Lassen Sie uns ein einfaches Bridge-Netzwerk erstellen:

docker network create my_awesome_network

Glückwunsch! Sie haben gerade Ihr erstes Docker-Netzwerk erstellt. Es ist, als hätten Sie gerade eine neue Straße in unserer Docker-Stadt verlegt.

Um zu überprüfen, ob unser Netzwerk erstellt wurde, können wir unseren zuverlässigen docker network ls-Befehl erneut verwenden:

docker network ls

Sie sollten nun Ihr neues Netzwerk in der Liste sehen!

Netzwerktreiber

In Docker sind Netzwerktreiber wie verschiedene Arten von Straßen. Lassen Sie uns einen Blick auf die Hauptarten werfen:

Treiber Beschreibung
Bridge Der Standard-Netzwerktreiber. Gut für单独容器, die miteinander kommunizieren müssen.
Host Entfernt die Netzwerk-Isolierung zwischen dem Container und dem Docker-Host.
Overlay Wird verwendet, um mehrere Docker-Daemons miteinander zu verbinden. Gut für Swarm-Dienste.
Macvlan Ermöglicht es Ihnen, eine MAC-Adresse an einen Container zuzuweisen, so dass er als physisches Gerät in Ihrem Netzwerk erscheint.
None Deaktiviert alle Netzwerkfunktionen für einen Container.

Beim Erstellen eines Netzwerks können Sie den Treiber angeben. Zum Beispiel:

docker network create --driver overlay my_overlay_network

Dies erstellt ein neues Overlay-Netzwerk, das großartig ist, wenn Sie mit Docker Swarm arbeiten.

Verbinden von Containern mit Netzwerken

Jetzt, da wir unsere Netzwerke haben, lernen wir, wie man unsere Container mit ihnen verbindet. Es ist, als würde man entscheiden, auf welcher Straße unser Haus (Container) stehen sollte.

Wenn Sie einen neuen Container ausführen, können Sie angeben, zu welchem Netzwerk er sich verbinden soll:

docker run --network=my_awesome_network nginx

Dieser Befehl führt einen nginx-Container aus und verbindet ihn mit unserem 'my_awesome_network'.

Sie können auch einen vorhandenen Container mit einem Netzwerk verbinden:

docker network connect my_awesome_network my_existing_container

Und wenn Sie einen Container von einem Netzwerk trennen möchten:

docker network disconnect my_awesome_network my_existing_container

Ein realweltbeispiel

Lassen Sie uns all dies mit einem praktischen Beispiel zusammenbringen. Stellen wir uns vor, wir bauen eine einfache Webanwendung mit einer Oberfläche und einer Backend-Komponente. Wir möchten, dass diese Container miteinander kommunizieren können, aber das Backend soll nicht der Außenwelt zugänglich sein.

Zuerst erstellen wir unser Netzwerk:

docker network create my_app_network

Nun führen wir unseren Backend-Container aus und verbinden ihn mit unserem Netzwerk:

docker run --name backend --network=my_app_network -d my-backend-image

Und schließlich unseren Frontend-Container:

docker run --name frontend --network=my_app_network -p 80:80 -d my-frontend-image

Jetzt können unsere Frontend- und Backend-Container über 'my_app_network' miteinander kommunizieren, aber nur das Frontend ist über Port 80 der Außenwelt zugänglich.

Schlussfolgerung

Und da haben Sie es, Leute! Wir haben die Grundlagen der Docker-Netzwerke durchlaufen, von der Auflistung und Inspektion von Netzwerken bis hin zur Erstellung unserer eigenen und dem Verbinden von Containern. Bedenken Sie, dass wie jede Fähigkeit das Beherrschen von Docker-Netzwerken Übung erfordert. Scheuen Sie sich nicht, herumzuexperimentieren und verschiedene Konfigurationen auszuprobieren.

Als wir uns abschließen, erinnere ich mich an einen Studenten, der mir einmal sagte, dass das Lernen von Docker-Netzwerken sich anfühlte, als würde man schwimmen lernen - am Anfang hat man das Gefühl, in Informationen zu ertrinken, aber wenn man den Durchbruch geschafft hat, gleitet man mit Leichtigkeit durch die Konzepte. Also weiter paddeln, und bevor Sie es wissen, werden Sie in Docker-Netzwerken schmetternd!

Fröhliches Dockern, und mögen Ihre Container immer ihren Weg nach Hause finden!

Credits: Image by storyset