Docker Netzwerk-Spielplatz

DockerBeginner
Jetzt üben

Einführung

Das Docker-Networking ist ein grundlegender Aspekt der Container-Orchestrierung, der es Containern ermöglicht, untereinander und mit externen Netzwerken zu kommunizieren. Diese Challenge führt Sie durch die wesentlichen Konzepte des Docker-Networkings – von der Erstellung und Verwaltung von Netzwerken bis hin zum Verbinden und Trennen von Containern.

Durch das Absolvieren dieser Challenge sammeln Sie praktische Erfahrungen mit Docker-Netzwerkbefehlen und verstehen, wie die Kommunikation zwischen Containern eingerichtet wird. Diese Fähigkeiten sind entscheidend für die Entwicklung und Bereitstellung von Multi-Container-Anwendungen in Docker-Umgebungen.

Tauchen wir ein in die Welt des Docker-Networkings!

Ein Netzwerk erstellen

In diesem Schritt erstellen Sie Ihr erstes Docker-Netzwerk. Dies ist die Grundlage, um Container zu verbinden und die Kommunikation zwischen ihnen zu ermöglichen.

Aufgaben

  1. Erstellen Sie ein neues Bridge-Netzwerk mit dem Namen my-network unter Verwendung des Befehls docker network create.
  2. Überprüfen Sie, ob das Netzwerk erstellt wurde, indem Sie alle Docker-Netzwerke auflisten.

Anforderungen

  • Führen Sie alle Operationen im Verzeichnis /home/labex/project aus.
  • Verwenden Sie beim Erstellen des Netzwerks den Standard-Bridge-Treiber.

Beispiel

Nach Abschluss dieses Schritts sollte my-network aufgelistet werden, wenn Sie docker network ls ausführen:

NETWORK ID     NAME         DRIVER    SCOPE
abcdef123456   my-network   bridge    local

Container im Netzwerk starten

Da wir nun ein Netzwerk haben, lassen Sie uns einige Container starten und mit diesem verbinden. Dieser Schritt zeigt, wie man Container innerhalb eines spezifischen Netzwerks startet – ein Schlüsselkonzept im Docker-Networking.

Aufgaben

  1. Starten Sie einen Container mit dem Namen container1 unter Verwendung des nginx-Images und verbinden Sie ihn mit my-network.
  2. Starten Sie einen weiteren Container mit dem Namen container2 unter Verwendung des httpd-Images und verbinden Sie ihn mit my-network.
  3. Überprüfen Sie, ob beide Container laufen und mit my-network verbunden sind.

Anforderungen

  • Führen Sie alle Operationen im Verzeichnis /home/labex/project aus.
  • Verwenden Sie beim Starten der Container das Flag --network, um sie mit my-network zu verbinden.
  • Führen Sie beide Container im Detached-Modus (Hintergrund) aus.

Beispiel

Nach Abschluss dieses Schritts sollten beide Container als laufend angezeigt werden, wenn Sie docker ps verwenden:

CONTAINER ID   IMAGE   COMMAND   CREATED         STATUS         PORTS     NAMES
abcdef123456   nginx   "..."     2 minutes ago   Up 2 minutes   80/tcp    container1
fedcba654321   httpd   "..."     2 minutes ago   Up 2 minutes   80/tcp    container2

Konnektivität testen

In diesem Schritt verifizieren Sie, dass die Container über das von Ihnen erstellte Netzwerk miteinander kommunizieren können. Dies ist ein entscheidender Test, um sicherzustellen, dass Ihre Netzwerkkonfiguration wie erwartet funktioniert.

Aufgaben

  1. Verwenden Sie den Befehl docker exec, um eine Shell in container1 auszuführen.
  2. Nutzen Sie innerhalb von container1 den Befehl curl, um über den Containernamen auf container2 zuzugreifen.

Anforderungen

  • Führen Sie alle Operationen im Verzeichnis /home/labex/project aus.
  • Verwenden Sie container2 als Hostnamen in Ihrem curl-Befehl.
  • Der curl-Befehl sollte auf den Standard-HTTP-Port (80) von container2 zugreifen.

Beispiel

Nach der Ausführung des curl-Befehls von container1 aus sollten Sie den Inhalt der Standardseite des Apache HTTP Servers sehen:

<!DOCTYPE html>
<html><body><h1>It works!</h1></body></html>

Einen Container mit mehreren Netzwerken verbinden

In diesem Schritt lernen Sie, wie Sie einen einzelnen Container mit mehreren Netzwerken verbinden. Dies ist ein fortgeschritteneres Konzept, das nützlich ist, um komplexe Netzwerktopologien zu erstellen oder Dienste schrittweise zwischen Netzwerken zu migrieren.

Aufgaben

  1. Erstellen Sie ein neues Bridge-Netzwerk mit dem Namen my-network2.
  2. Verbinden Sie container2 mit my-network2, während die Verbindung zu my-network bestehen bleibt.
  3. Überprüfen Sie, ob container2 nun mit beiden Netzwerken verbunden ist.

Anforderungen

  • Führen Sie alle Operationen im Verzeichnis /home/labex/project aus.
  • Verwenden Sie den Befehl docker network connect, um container2 zu my-network2 hinzuzufügen.
  • Verwenden Sie den Befehl docker inspect, um die Netzwerkverbindungen zu überprüfen.

Beispiel

Nachdem Sie container2 mit my-network2 verbunden haben, sollten beide Netzwerke aufgelistet werden, wenn Sie den Container inspizieren:

"Networks": {
    "my-network": {
        ...
    },
    "my-network2": {
        ...
    }
}

Lösung:

## Create a new network
## This creates a second network named 'my-network2'
docker network create my-network2

## Connect container2 to the new network
## 'docker network connect' adds a running container to a network
docker network connect my-network2 container2

## Verify the connections
## 'docker inspect' provides detailed information about a container
## including its network connections
docker inspect container2

Erläuterung: In diesem Schritt erstellen wir ein zweites Netzwerk und verbinden container2 damit. Dies demonstriert, dass ein Container gleichzeitig mit mehreren Netzwerken verbunden sein kann. Der Befehl docker inspect ermöglicht es uns zu verifizieren, dass container2 nun tatsächlich in beiden Netzwerken präsent ist.

Einen Container von einem Netzwerk trennen

In diesem Schritt lernen Sie, wie Sie einen Container aus einem Netzwerk entfernen, ohne den Container zu stoppen. Dies ist nützlich, wenn Sie einen Container isolieren müssen oder Ihre Netzwerkarchitektur umstrukturieren.

Aufgaben

  1. Trennen Sie container2 von my-network unter Verwendung des Befehls docker network disconnect.
  2. Überprüfen Sie, ob container2 nicht mehr mit my-network verbunden ist.

Anforderungen

  • Führen Sie alle Operationen im Verzeichnis /home/labex/project aus.
  • Verwenden Sie den Befehl docker network disconnect, um container2 aus my-network zu entfernen.
  • Verwenden Sie den Befehl docker network inspect, um die Trennung zu überprüfen.

Beispiel

Nachdem Sie container2 von my-network getrennt haben, sollte container2 nicht mehr aufgelistet werden, wenn Sie my-network inspizieren:

$ docker network inspect my-network
[
    {
        "Name": "my-network",
        ...
        "Containers": {
            "container1": {
                ...
            }
        },
        ...
    }
]

Ein Netzwerk entfernen

In diesem letzten Schritt lernen Sie, wie Sie ein Docker-Netzwerk entfernen, wenn es nicht mehr benötigt wird. Das ordnungsgemäße Aufräumen ungenutzter Ressourcen ist ein wichtiger Bestandteil einer effizienten Verwaltung von Docker-Umgebungen.

Aufgaben

  1. Trennen Sie container2 von my-network2, falls die Verbindung noch besteht.
  2. Entfernen Sie das Netzwerk my-network2 mit dem Befehl docker network rm.
  3. Überprüfen Sie, ob my-network2 erfolgreich entfernt wurde.

Anforderungen

  • Führen Sie alle Operationen im Verzeichnis /home/labex/project aus.
  • Stellen Sie sicher, dass keine Container mehr mit my-network2 verbunden sind, bevor Sie es entfernen.
  • Verwenden Sie den Befehl docker network ls, um das Entfernen des Netzwerks zu bestätigen.

Beispiel

Nach dem Entfernen von my-network2 sollte es nicht mehr in der Liste erscheinen, wenn Sie docker network ls ausführen:

NETWORK ID     NAME         DRIVER    SCOPE
abcdef123456   my-network   bridge    local
ghijkl789012   bridge       bridge    local
mnopqr345678   host         host      local
stuvwx901234   none         null      local

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss der Docker Netzwerk-Grundlagen Challenge! Sie haben die wesentlichen Konzepte des Docker-Networkings erfolgreich gemeistert, darunter:

  1. Erstellen von benutzerdefinierten Docker-Netzwerken
  2. Starten von Containern in spezifischen Netzwerken
  3. Testen der Konnektivität zwischen Containern
  4. Verbinden von Containern mit mehreren Netzwerken
  5. Trennen von Containern von Netzwerken
  6. Entfernen von Docker-Netzwerken

Diese Fähigkeiten bilden das Fundament für ein effektives Docker-Netzwerkmanagement und sind von unschätzbarem Wert, wenn Sie mit komplexeren containerisierten Anwendungen arbeiten. Denken Sie daran, dass eine korrekte Netzwerkkonfiguration entscheidend für die Isolation von Containern, die Sicherheit und die effiziente Kommunikation zwischen Diensten ist.

Im Verlauf dieser Challenge haben Sie gelernt, wie Sie isolierte Umgebungen für Ihre Container schaffen, die Kommunikation zwischen ihnen ermöglichen und Netzwerkverbindungen dynamisch verwalten. Diese Funktionen erlauben es Ihnen, anspruchsvolle Netzwerkarchitekturen zu entwerfen, die sich an wechselnde Anforderungen anpassen lassen.

Wenn Sie Ihre Docker-Reise fortsetzen, könnten Sie fortgeschrittene Themen wie Overlay-Netzwerke für Multi-Host-Setups, Netzwerk-Plugins oder die Integration von Docker-Networking in Orchestrierungsplattformen wie Kubernetes erkunden. Vielleicht möchten Sie auch tiefer in Sicherheitskonzepte eintauchen, etwa wie man Netzwerkrichtlinien (Network Policies) nutzt, um den Datenverkehr zwischen Containern zu steuern.

Üben Sie diese Fähigkeiten weiter, und Sie werden bestens gerüstet sein, um in Ihren zukünftigen Projekten komplexe Container-Netzwerkarchitekturen zu entwerfen und zu verwalten. Effektives Networking ist der Schlüssel zum Aufbau skalierbarer, sicherer und effizienter Anwendungen.

✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben