Einführung
Dieses Tutorial führt Sie durch die Verwendung von Docker Compose mit einer Host-Netzwerkkonfiguration auf einer LabEx Cloud-VM. Docker Compose ist ein Tool, das Ihnen hilft, mehrere Container zu verwalten – denken Sie an Container als leichte, isolierte Umgebungen, die Anwendungen wie einen Webserver ausführen. Normalerweise isoliert Docker das Netzwerk eines Containers vom Host-Rechner (der VM, auf der Sie arbeiten), aber die Host-Netzwerkoption ermöglicht es dem Container, direkt das Netzwerk des Hosts zu nutzen. Dies ist nützlich, wenn Ihre Anwendung so agieren muss, als würde sie direkt auf dem Host laufen, beispielsweise wenn Sie auf die Ports des Hosts zugreifen möchten, ohne zusätzliche Einstellungen vornehmen zu müssen. Am Ende werden Sie Docker Compose einrichten, einen einfachen Webservice mithilfe des Host-Netzwerks erstellen, bereitstellen und testen. Docker ist in Ihrer LabEx-Umgebung bereits vorinstalliert, aber wir stellen sicher, dass auch Docker Compose einsatzbereit ist.
Dieser Lab erfordert eine Internetverbindung zum Lernen. Daher können nur Pro-Benutzer die VM starten. Upgradeen Sie Ihr Konto auf Pro.
Einrichten von Docker Compose
Bevor Sie sich in die Konfiguration stürzen, stellen Sie sicher, dass Docker Compose auf Ihrer LabEx Cloud-VM verfügbar ist. Während Docker bereits vorinstalliert ist, ist Docker Compose – ein separates Tool zur Verwaltung von Mehr-Container-Setups – möglicherweise nicht. Wir werden es schnell über das Terminal installieren.
Öffnen Sie das Terminal in Ihrer LabEx-VM. Die Eingabeaufforderung sollte /home/labex/project anzeigen – dies ist Ihr Standard-Arbeitsverzeichnis. Führen Sie diese Befehle nacheinander aus:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Hier ist, was diese Befehle tun:
curl: Lädt die Docker Compose-Binary von der offiziellen GitHub-Release-Seite herunter. Die URL verwendet$(uname -s)-$(uname -m), um sich an das System Ihrer VM anzupassen (z. B. Linux-x86_64). Version 2.20.2 ist stabil und weitgehend kompatibel.-o /usr/local/bin/docker-compose: Speichert es in/usr/local/bin, einem Standardverzeichnis für ausführbare Tools.sudostellt sicher, dass Sie die Berechtigung haben, dort zu schreiben.chmod +x: Macht die Datei ausführbar, sodass Sie sie als Befehl ausführen können. Wiederum gewährtsudodie erforderlichen Rechte.
Um zu bestätigen, dass die Installation erfolgreich war, führen Sie aus:
docker-compose --version
Sie sollten eine Ausgabe wie Docker Compose version v2.20.2 sehen. Wenn Sie die Meldung "Befehl nicht gefunden" erhalten, führen Sie die Befehle erneut sorgfältig aus – überprüfen Sie auf Tippfehler oder Internetprobleme (die VM benötigt Internetzugang, um die Datei herunterzuladen). Dieser Schritt stellt sicher, dass Sie docker-compose in den nächsten Schritten verwenden können.
Erstellen einer Docker Compose-Datei mit Host-Netzwerk
Jetzt, da Docker Compose bereit ist, erstellen wir eine docker-compose.yml-Datei - das ist das Blueprint für das Ausführen eines Webdiensts mit Host-Netzwerk. Wir verwenden nano, einen einfachen und für Einsteiger gut geeigneten Terminal-Texteditor.
Um die Datei zu erstellen und zu bearbeiten, führen Sie die folgenden Schritte aus:
Stellen Sie im Terminal sicher, dass Sie sich im Projektverzeichnis befinden:
cd /home/labex/projectErstellen und öffnen Sie die Datei mit nano:
nano docker-compose.ymlTippen oder einfügen Sie den folgenden Inhalt in nano:
version: "3"
services:
web:
image: nginx:latest
network_mode: host
Hier ist, was jeder Teil bedeutet:
version: "3": Legt das Docker Compose-Dateiformat fest. Version 3 ist ein üblicher Standard, ähnlich wie das Auswählen eines Templates.services: Listet die Container (oder "Services") auf, die ausgeführt werden sollen, ähnlich wie Arbeiter für Ihr Projekt.web: Benennt Ihren Service - Sie können ihn wie Sie möchten nennen, aber "web" eignet sich gut für einen Webserver.image: nginx:latest: Gibt die Software an - Nginx, ein beliebter Webserver, wobeilatestdie neueste Version aus Docker Hub (einer Container-Imagelibrary) herunterlädt.network_mode: host: Die Schlüssel-Einstellung. Normalerweise gibt Docker den Containern ihr eigenes privates Netzwerk und isoliert sie von der Hostmaschine. Derhost-Modus lässt den Container direkt das Netzwerk der VM verwenden, sodass Nginx die Ports der Hostmaschine (wie z. B. 80) ohne zusätzliche Schritte erreichen kann.
- Um die Datei in nano zu speichern:
- Drücken Sie
Ctrl + X, um zu beenden - Drücken Sie
Y, um die Änderungen zu speichern zu bestätigen - Drücken Sie
Enter, um den Dateinamen zu bestätigen
- Drücken Sie
Die Datei ist jetzt in /home/labex/project gespeichert, und Sie sind für den nächsten Schritt bereit.
Bereitstellen der Docker Compose-Anwendung
Nachdem Sie Ihre docker-compose.yml-Datei erstellt haben, können wir den Nginx-Container bereitstellen – Docker wird ihn basierend auf Ihrer Blaupause starten. Wechseln Sie hierfür zum Terminal.
Führen Sie im Terminal im Verzeichnis /home/labex/project folgenden Befehl aus:
docker-compose up -d
Hier ist, was dieser Befehl macht:
docker-compose: Das Tool, das diedocker-compose.yml-Datei liest und Ihre Services verwaltet.up: Startet den in der Datei definiertenweb-Service (Nginx).-d: Führt den Service im Hintergrund aus ("detached"-Modus), sodass Sie weiterhin das Terminal nutzen können.
Docker Compose lädt das nginx:latest-Image von Docker Hub herunter, wenn es noch nicht auf der VM vorhanden ist (Sie sehen möglicherweise Downloadmeldungen), und startet dann den Container. Überprüfen Sie, ob der Container läuft, mit folgendem Befehl:
docker ps
Dieser Befehl listet alle aktiven Container auf. Suchen Sie nach nginx:latest in der Spalte "IMAGE" und "Up" in der Spalte "STATUS" (z. B. "Up 5 seconds"). Sie werden keine Portzuordnungen (wie 0.0.0.0:80->80/tcp) sehen, da network_mode: host die Ports des Hosts direkt nutzt. Wenn nichts angezeigt wird, stellen Sie sicher, dass Sie sich im Verzeichnis /home/labex/project befinden (pwd zum Überprüfen) und führen Sie docker-compose up -d erneut aus.
Testen des Nginx-Services im Host-Netzwerk
Jetzt, da der Container mit Host-Netzwerk ausgeführt wird, testen wir, ob Nginx Webseiten auf Port 80 des Hosts – dem Standard-Webport – bereitstellt.
Führen Sie im Terminal im Verzeichnis /home/labex/project folgenden Befehl aus:
curl localhost:80
Was passiert hier:
curl: Lädt Daten von einer Webadresse herunter, ähnlich wie ein Terminal-basierter Browser.localhost:80: Stellt eine Verbindung zur VM selbst (localhost) auf Port 80 her. Mitnetwork_mode: hostnutzt der Nginx-Container das Netzwerk des Hosts, sodass sein Port 80 der Port 80 des Hosts ist.
Sie sollten HTML-Code sehen, der mit <!DOCTYPE html> beginnt – die Standard-Willkommensseite von Nginx. Normalerweise isoliert Docker die Netzwerke der Container, was eine Portzuordnung erfordert (z. B. Host-Port 80 auf Container-Port 80). Im Host-Modus entfällt dies, sodass Nginx direkt an Port 80 der VM gebunden werden kann.
Wenn Sie die Meldung "Verbindung abgelehnt" erhalten, überprüfen Sie Schritt 3 – führen Sie docker ps aus, um zu bestätigen, dass der Container "Up" ist. Starten Sie ihn bei Bedarf mit docker-compose up -d neu, oder überprüfen Sie Docker mit sudo service docker status. Da wir keinen Browser verwenden, ist curl hier Ihr Testtool.
Logs untersuchen und aufräumen
Lassen Sie uns die Logs des Containers prüfen, um zu sehen, was im Inneren passiert – eine wichtige Fähigkeit zur Fehlerbehebung – und anschließend den Container entfernen, um aufzuräumen.
Logs prüfen
Führen Sie folgenden Befehl aus:
docker-compose logs web
docker-compose logs: Zeigt die Ausgabe Ihrer Services an.web: Zielt auf denweb-Service aus derdocker-compose.yml-Datei.
Suchen Sie nach Zeilen wie "nginx starting" oder "listening on 0.0.0.0:80". Wenn Sie curl verwendet haben, sehen Sie möglicherweise "GET /" in den Logs. Fehler (z. B. "port 80 failed") würden ebenfalls hier angezeigt werden – nützlich, wenn Nginx abstürzt.
Aufräumen
Führen Sie folgenden Befehl aus:
docker-compose down
docker-compose down: Stoppt und entfernt den Container, gibt Port 80 frei und räumt auf.
Überprüfen Sie dies mit:
docker ps
Wenn keine nginx-Zeile angezeigt wird, ist der Container entfernt. Wenn er weiterhin angezeigt wird, führen Sie docker-compose down erneut aus. Die docker-compose.yml-Datei bleibt erhalten, sodass Sie den Container später mit docker-compose up -d erneut starten können. Damit ist der Lebenszyklus abgeschlossen: Einrichtung, Bereitstellung, Test und Entfernung.
Fehlerbehebung und Best Practices
Hier erfahren Sie, wie Sie Probleme bewältigen und Docker Compose sinnvoll nutzen können.
Tipps zur Fehlerbehebung
- Container startet nicht: Wenn
docker pskeine Einträge anzeigt, prüfen Siedocker-compose logs webauf Fehler wie "port in use". Geben Sie Port 80 mitsudo lsof -i :80undsudo kill <PID>frei und starten Sie danndocker-compose up -d. - Keine
curl-Antwort: Stellen Sie sicher, dass der Container läuft (docker ps) und Docker gestartet ist (sudo service docker status). Starten Sie entwederdocker-compose up -derneut oder starten Sie Docker mitsudo service docker restartneu. - Dateiprobleme: Wenn
docker-compose updie Datei nicht finden kann, überprüfen Sie, ob Sie sich im Verzeichnis/home/labex/projectbefinden (pwd) und ob diedocker-compose.yml-Datei existiert (ls).
Best Practices
- Einschränkung des Host-Netzwerks: Die Verwendung des Host-Netzwerks ist einfach, bietet aber keine Isolation. Dies birgt ein Sicherheitsrisiko, wenn andere Dienste laufen. Verwenden Sie es daher nur in Laborumgebungen und nur in der Produktion, wenn es unbedingt erforderlich ist.
- Vorabprüfung der Ports: Testen Sie mit
sudo netstat -tuln | grep :80und stellen Sie sicher, dass Port 80 frei ist. - Aufbewahrung der Dateien: Speichern Sie die
docker-compose.yml-Datei im Verzeichnis/home/labex/project, um sie später wiederverwenden zu können. - Überprüfung der Logs: Überprüfen Sie regelmäßig die Logs, um Probleme frühzeitig zu erkennen.
Diese Gewohnheiten machen Ihre Docker-Arbeiten zuverlässig und vermitteln Ihnen Kernkompetenzen.
Zusammenfassung
Sie haben Docker Compose installiert, eine docker-compose.yml-Datei mit Host-Netzwerk erstellt, einen Nginx-Container bereitgestellt, getestet, die Logs überprüft und aufgeräumt. Das Host-Netzwerk ermöglicht es Containern, direkt das Netzwerk des Hosts zu nutzen und umgeht so die Isolation von Docker – ein leistungsstarkes Verfahren. Diese Schritte bilden die Grundlage für die Verwaltung von Docker Compose-Anwendungen und die Fehlerbehebung und bereiten Sie auf größere Projekte vor.



