Dies ist ein maschinell übersetzter Text, der Fehler enthalten kann!
Mit Compose beschreibst du das gewünschte Setup in einer Datei und lässt Docker die Container erstellen. Hier beginnst du mit einem fertigen Image für einen Nginx-Webserver. Anschließend kannst du einen Dienst hinzufügen und untersuchen, was automatisch erstellt wird.
Bevor Sie beginnen: Docker Engine und Compose aus Docker Level 1 müssen funktionieren. Führe docker compose version im Linux-VM aus. Du benötigst keine Flask-App, Dockerdatei oder ein GitHub-Konto. Das Nachschlagewerk YAMLSpeisekarte bietet Unterstützung für Einrückungen und Listen; du kannst es lesen, ohne eine GitHub-Arbeitsablauf zu haben.
Führe zuerst „Aufgabe 1“ durch und überprüfe die Webantwort. Die Aktualisierung ist ein Nachschlagen für spätere Arbeit. Mit „Aufgabe 2“ kannst du mehrere Dienste in demselben Projekt testen.
Was ist Docker Compose?
Mit Docker Compose beschreibst du eine oder mehrere Dienste in einer Datei. In dieser Übung führt jeder Dienst einen Container aus. Hier wird docker-compose.yml verwendet.
compose.yaml und docker-compose.yml sind Namen, die von Compose unterstützt werden. Verwende eines davon im Projektordner und führe die Befehle aus diesem Ordner aus. Hier wird docker-compose.yml verwendet.
services:
web:
image: nginx:latest
ports:
- "127.0.0.1:8083:80"
Ein Befehl richtet alles ein:
docker compose up -d
Die Compose-Datei kann auf einem anderen Server verwendet werden, aber Sie müssen auch die erforderlichen Daten und lokalen Dateien übertragen sowie Passwörter, Netzwerk und andere Einstellungen einrichten. Tags wie latest können später auf ein neues Image verweisen. Damit die Builds identisch sind, muss auch festgelegt werden, welches Image verwendet wird.
Warum ist dies Automatisierung?
Denken Sie über den Unterschied nach:
| Manuelles Setup | Mit Docker Compose |
|---|---|
| Installieren Sie Nginx manuell | image: nginx:latest |
| Konfigurieren Sie Ports | ports: "80:80" |
| Installieren Sie Grafana manuell | image: grafana/grafana:latest |
| Dokumentieren Sie alle Schritte | Beschreiben Sie das gewünschte Setup in der Compose-Datei |
| Wiederholen Sie alles auf dem nächsten Server | docker compose up -d |
Die Compose-Datei ist Teil der technischen Dokumentation und beschreibt das gewünschte Setup. Prüfen Sie den tatsächlichen Zustand mit docker compose ps und den Logs. Begründungen, Testergebnisse und Sicherungsroutinen müssen zusätzlich dokumentiert werden.
Lies das kleine Beispiel
services sammelt die Dienste. web ist der Name, den wir dem Webserver geben. image wählt ein fertiges Image aus, während ports Port 8083 an der Rückkopplungsadresse des VMs mit Port 80 im Container verbindet. Daher testen Sie von der VM selbst. Das Bauen aus Quellcode kommt in [[Docker Level 2 - Dockerfile und Compose|Docker Level 2]].
Nützliche Docker-Befehle
| Befehl | Was er tut |
|---|---|
docker compose up -d | Startet alle Dienste im Hintergrund |
docker compose down | Stoppt und entfernt die Container und Netzwerke des Projekts |
docker compose logs -f | Verfolgt die Protokolle in Echtzeit |
docker compose pull | Holt sich Images ab, auf die die Tags des Projekts verweisen |
docker compose restart | Startet die Container des Projekts neu, ohne das Image zu wechseln |
docker ps | Zeigt laufende Container an |
Wenn der Dienst Speicherung benötigt
[[Containernutzung Stufe 2 – Daten außerhalb des Containers bewahren|Daten außerhalb des Containers bewahren]] erklärt Bind Mounts und benannte Volumes. Die folgende Nginx-Übung erfordert keine Datenbank oder Speicheranbindung. Nutzen Sie die Speichermöglichkeit, bevor Sie das Projekt um einen Dienst erweitern, der Daten erhalten muss.
Aktualisierung von Diensten
Das Aktualisieren eines Docker-Dienstes ist einfach:
# Neueste Version abrufen
docker compose pull
# Neustart mit neuer Version
docker compose up -d
up -d wendet das neue Image an, indem die Container neu erstellt werden. Stellen Sie sicher, dass der Dienst nach dem Update funktioniert; eine neue Image-Version kann Änderungen in den Einstellungen oder Daten erfordern.
Aufgabe 1 – Richten Sie Nginx mit Docker Compose ein
Arbeiten Sie in der Konsole des virtuellen Computers (VM). Erstellen Sie einen neuen Ordner, damit diese Übung kein anderes Compose-Projekt verändert:
mkdir compose-ovelse
cd compose-ovelse
nano docker-compose.yml
Falls der Ordner bereits existiert, öffnen Sie ihn und prüfen Sie den Inhalt, bevor Sie fortfahren. Schreiben Sie das Nginx-Beispiel aus „Was ist Docker Compose?“ in die Datei. Speichern mit Strg+O, bestätigen mit Eingabe und beenden mit Strg+X. Prüfen und starten:
docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083
config --quiet muss ohne Fehlermeldung beendet werden. Wenn Sie einen Fehler in der Datei beheben, führen Sie die Prüfung vor dem Neustart erneut aus. ps sollte zeigen, dass web läuft, und curl sollte den Nginx-Inhalt mit „Welcome to nginx!“ anzeigen.
Wenn der Port belegt ist, wählen Sie im Dateisystem einen anderen freien Hostport und verwenden Sie denselben Port bei curl. Wenn sich der Container anhalten lässt, lesen Sie docker compose logs web. Starten Sie kein neues Projekt in einem zufälligen Verzeichnis, um es zu wiederholen.
Erklären Sie, bevor Sie fortfahren: Welche Datei beschreibt den Dienst und was hat docker compose up -d erstellt? Stoppen Sie das Projekt mit docker compose stop, starten Sie es mit docker compose up -d neu und wiederholen Sie den curl-Test. Falls Sie diese Seite als Compose-Support für eine andere Aufgabe nutzen, können Sie nun dorthin zurückkehren.
Aufgabe 2 – Einen Dienst hinzufügen
Erweitern Sie die docker-compose.yml aus Aufgabe 1 um einen zusätzlichen Dienst. Zum Beispiel:
- Uptime Kuma auf Port 3001
- Grafana auf Port 3000
Verwenden Sie unter services einen eigenen Dienstenamen auf derselben Einrückungsebene wie web. Lesen Sie das offizielle Docker-Beispiel des Dienstes für das benötigte Image, den Port und die Speicherung. Verwenden Sie einen freien Hostport und beschränken Sie den Zugriff auf die Übungsumgebung. Ein latest-Tag ist keine festgelegte Version.
Führen Sie zuerst docker compose config --quiet aus. Starten Sie dann mit docker compose up -d und stellen Sie sicher, dass beide Dienste gleichzeitig laufen. Wenn Sie eine Reverse Proxy-Bindung verwenden wie bei Nginx, testen Sie den Port von der VM; ein Zugriff von einem anderen Gerät erfordert eigene Klärungen zu Adresse, Port und Netzwerk.
Zeigen Sie docker compose ps sowie eine erwartete Antwort jedes Dienstes an der tatsächlich konfigurierten Adresse und dem Port. Erklären Sie mündlich oder schriftlich, was Compose automatisch erstellt und was Sie noch selbst erledigen müssen, beispielsweise Daten, Einstellungen und Sicherungen. Falls ein Dienst stoppt, lesen Sie docker compose logs, bevor Sie die Konfiguration ändern. Beenden Sie etwaiges Loggen mit Strg+C.
Zusammenfassung
- Docker Compose ermöglicht es Ihnen, mehrere Dienste in einer Datei zu definieren
- Die Compose-Datei ist sowohl Konfiguration als auch Dokumentation
- Das Aktualisieren erfolgt mit
docker compose pull+docker compose up -d - Mit Docker lässt sich das Verschieben von Diensten zwischen Servern leicht bewerkstelligen
Quellen: Docker Compose: Erstes Projekt und Compose-Dienste.