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
- Erstellen Sie ein neues Bridge-Netzwerk mit dem Namen
my-networkunter Verwendung des Befehlsdocker network create. - Überprüfen Sie, ob das Netzwerk erstellt wurde, indem Sie alle Docker-Netzwerke auflisten.
Anforderungen
- Führen Sie alle Operationen im Verzeichnis
/home/labex/projectaus. - 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
- Starten Sie einen Container mit dem Namen
container1unter Verwendung desnginx-Images und verbinden Sie ihn mitmy-network. - Starten Sie einen weiteren Container mit dem Namen
container2unter Verwendung deshttpd-Images und verbinden Sie ihn mitmy-network. - Überprüfen Sie, ob beide Container laufen und mit
my-networkverbunden sind.
Anforderungen
- Führen Sie alle Operationen im Verzeichnis
/home/labex/projectaus. - Verwenden Sie beim Starten der Container das Flag
--network, um sie mitmy-networkzu 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
- Verwenden Sie den Befehl
docker exec, um eine Shell incontainer1auszuführen. - Nutzen Sie innerhalb von
container1den Befehlcurl, um über den Containernamen aufcontainer2zuzugreifen.
Anforderungen
- Führen Sie alle Operationen im Verzeichnis
/home/labex/projectaus. - Verwenden Sie
container2als Hostnamen in Ihremcurl-Befehl. - Der
curl-Befehl sollte auf den Standard-HTTP-Port (80) voncontainer2zugreifen.
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
- Erstellen Sie ein neues Bridge-Netzwerk mit dem Namen
my-network2. - Verbinden Sie
container2mitmy-network2, während die Verbindung zumy-networkbestehen bleibt. - Überprüfen Sie, ob
container2nun mit beiden Netzwerken verbunden ist.
Anforderungen
- Führen Sie alle Operationen im Verzeichnis
/home/labex/projectaus. - Verwenden Sie den Befehl
docker network connect, umcontainer2zumy-network2hinzuzufü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
- Trennen Sie
container2vonmy-networkunter Verwendung des Befehlsdocker network disconnect. - Überprüfen Sie, ob
container2nicht mehr mitmy-networkverbunden ist.
Anforderungen
- Führen Sie alle Operationen im Verzeichnis
/home/labex/projectaus. - Verwenden Sie den Befehl
docker network disconnect, umcontainer2ausmy-networkzu 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
- Trennen Sie
container2vonmy-network2, falls die Verbindung noch besteht. - Entfernen Sie das Netzwerk
my-network2mit dem Befehldocker network rm. - Überprüfen Sie, ob
my-network2erfolgreich entfernt wurde.
Anforderungen
- Führen Sie alle Operationen im Verzeichnis
/home/labex/projectaus. - Stellen Sie sicher, dass keine Container mehr mit
my-network2verbunden 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:
- Erstellen von benutzerdefinierten Docker-Netzwerken
- Starten von Containern in spezifischen Netzwerken
- Testen der Konnektivität zwischen Containern
- Verbinden von Containern mit mehreren Netzwerken
- Trennen von Containern von Netzwerken
- 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.



