Docker Compose Grundlagen bedeuten: Du beschreibst alle Container einer Anwendung in einer einzigen Compose-Datei und startest sie gemeinsam. So werden Webserver, Datenbank und weitere Dienste reproduzierbar konfiguriert. Für aktuelle Docker-Installationen verwendest du dafür den Befehl docker compose mit Leerzeichen.
Stand: 12.10.2026
Auf einen Blick
- Compose fasst Services, Netzwerke und Volumes in einer YAML-Datei zusammen.
- Die aktuelle Compose Specification ersetzt die früher getrennten Formate 2.x und 3.x.
- Starte Projekte mit
docker compose up -dund prüfe sie mitdocker compose ps. - Nutze benannte Volumes für Daten und feste Image-Tags statt
latest.
Was ist Docker Compose?
Docker Compose ist ein Werkzeug für Anwendungen, die aus mehreren Containern bestehen. Du legst die gewünschte Konfiguration als Code ab. Danach kann jede Person im Team dieselbe Umgebung mit wenigen Befehlen starten. Das hilft bei Entwicklung, Tests und bei überschaubaren Deployments auf einem einzelnen Host.
Ein Service ist die Definition eines Containers, etwa für Nginx oder PostgreSQL. Compose erstellt bei Bedarf ein gemeinsames Standardnetzwerk. Dadurch können Services einander über ihren Servicenamen erreichen. Außerdem verwaltet Compose die zugehörigen Container als Projekt.
Warum lohnt sich Compose für Einsteiger?
Ohne Compose würdest du lange docker run-Befehle dokumentieren und in der richtigen Reihenfolge ausführen. Mit Compose liegen Ports, Images, Variablen, Volumes und Abhängigkeiten an einem Ort. Änderungen werden dadurch nachvollziehbar und lassen sich in Git versionieren.
| Einzelner docker-run-Befehl | Docker Compose |
|---|---|
| Optionen stehen nur im Shell-Verlauf oder Skript. | Die Konfiguration liegt lesbar in einer YAML-Datei. |
| Mehrere Container müssen einzeln verbunden werden. | Services teilen automatisch ein Projekt-Netzwerk. |
| Start und Stopp erfolgen pro Container. | Das gesamte Projekt wird gemeinsam gestartet oder beendet. |
| Reproduzierbarkeit hängt von Dokumentation ab. | Die Datei ist die deklarative Dokumentation. |
Wie installierst und prüfst du Docker Compose?
Docker Desktop enthält Compose unter Windows und macOS. Unter Linux ist heute das Compose-Plugin der übliche Weg. Die Docker-Dokumentation empfiehlt die Installation über das Docker-Paket-Repository, damit Aktualisierungen über den Paketmanager kommen. Eine manuelle Plugin-Installation aktualisiert sich dagegen nicht automatisch.
- Installiere zuerst Docker Engine und Docker CLI entsprechend deiner Distribution.
- Installiere anschließend das Plugin aus dem eingerichteten Docker-Repository.
- Prüfe die Version und die Erreichbarkeit des Daemons.
sudo apt-get update
sudo apt-get install docker-compose-plugin
docker compose version
docker infoDer alte Befehl docker-compose mit Bindestrich stammt aus der früheren Standalone-Variante. Bevorzuge in neuen Anleitungen und Skripten docker compose. Falls der Befehl nicht gefunden wird, fehlt meist das Plugin oder Docker ist noch nicht korrekt installiert.
Wie ist eine Compose-Datei aufgebaut?
Lege im Projektverzeichnis eine Datei namens compose.yaml an. Auch compose.yml ist üblich. Die aktuelle Compose Specification ist das empfohlene Format; einen veralteten version: 3.8-Eintrag brauchst du nicht mehr. Sie beschreibt Services, Netzwerke, Volumes und weitere Elemente einheitlich.
Das folgende Beispiel startet einen Webserver und eine Datenbank. Das Passwort ist absichtlich nur ein Platzhalter für lokale Tests. Für echte Zugangsdaten verwendest du Secrets oder eine nicht eingecheckte Umgebungsdatei und schützt deren Zugriffsrechte.
services:
web:
image: nginx:1.27-alpine
ports:
- '8080:80'
depends_on:
- db
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: beispiel
POSTGRES_USER: app
POSTGRES_PASSWORD: nur-lokal-testen
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:Unter services steht jeder Dienst. ports veröffentlicht hier Port 8080 des Hosts auf Port 80 im Webcontainer. depends_on steuert die Startreihenfolge, wartet aber nicht automatisch darauf, dass eine Datenbank bereits Anfragen annehmen kann. Dafür braucht die Anwendung eigene Wiederholungslogik oder einen passend konfigurierten Healthcheck.
Das benannte Volume db-data erhält die Datenbankdaten außerhalb des kurzlebigen Containers. Trotzdem ist ein Volume kein Backup. Plane zusätzlich Sicherungen und teste deren Wiederherstellung, etwa mit einem Restic-Backup für Docker-Volumes.
Wie startest und verwaltest du das Projekt?
Wechsle in das Verzeichnis mit der Compose-Datei. Zuerst solltest du die Konfiguration rendern lassen. Danach startest du die Services im Hintergrund. So erkennst du Tippfehler vor dem Start und kannst den Zustand gezielt prüfen.
- Prüfe die zusammengeführte Konfiguration mit
docker compose config. - Starte alle Services mit
docker compose up -d. - Kontrolliere Status und Protokolle.
- Stoppe das Projekt bei Bedarf sauber.
docker compose config
docker compose up -d
docker compose ps
docker compose logs --follow
docker compose downdocker compose down entfernt Container und das Projekt-Netzwerk, behält benannte Volumes aber standardmäßig. Mit --volumes würdest du auch diese löschen. Setze diese Option daher nur bewusst ein, denn Datenbanken verlieren dabei ihre gespeicherten Daten.
Welche Befehle brauchst du im Alltag?
| Befehl | Zweck |
|---|---|
docker compose up -d | Erstellt und startet Services im Hintergrund. |
docker compose ps | Zeigt Status, Namen und veröffentlichte Ports. |
docker compose logs --follow web | Folgt den Logs eines bestimmten Services. |
docker compose exec web sh | Öffnet eine Shell in einem laufenden Service. |
docker compose pull | Lädt aktuelle Images für die festgelegten Tags. |
docker compose up -d --force-recreate | Erstellt Container neu, ohne Images zu bauen. |
Welche Regeln machen dein Compose-Projekt robuster?
Pinne Images auf einen nachvollziehbaren, getesteten Tag. latest ist kein fester Versionsstand und kann beim nächsten Pull ein anderes Image liefern. Baue eigene Images zudem schlank und sicher; die wichtigsten Grundlagen findest du bei den Dockerfile Best Practices.
Ergänze für Services, deren Zustand wichtig ist, einen Healthcheck. Das macht Probleme im Status sichtbar und gibt abhängigen Diensten ein überprüfbares Signal. Eine konkrete Anleitung liefert Docker Healthcheck einrichten.
services:
web:
image: nginx:1.27-alpine
healthcheck:
test: ['CMD-SHELL', 'wget -q -O /dev/null http://localhost/ || exit 1']
interval: 30s
timeout: 5s
retries: 3Trenne außerdem Konfiguration von Geheimnissen. Eine .env-Datei erleichtert lokale Variablen, gehört mit echten Kennwörtern aber nicht in ein öffentliches Repository. Prüfe nach Änderungen immer docker compose config, bevor du produktive Services neu erstellst.
Wie aktualisierst du Services ohne Überraschungen?
Ein Update beginnt nicht mit docker compose pull, sondern mit einem Backup und einem Blick in die Release Notes des verwendeten Images. Ziehe anschließend die für deine festgelegten Tags verfügbaren Images und erstelle die Services neu. Offene Browser-Sitzungen oder Datenbank-Migrationen testest du danach gezielt.
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100Ändert sich nur ein Image, übernimmt Compose den neuen Stand beim nächsten up -d für den betreffenden Service. Kontrolliere danach den Status, statt dich allein auf einen erfolgreichen Pull zu verlassen. Bei einer Datenbank oder einer Anwendung mit Migrationen gehört ein getestetes Restore-Konzept dazu.
Für lokale Experimente kannst du außerdem einen Projektnamen vergeben. Damit laufen mehrere Compose-Projekte ohne Namenskonflikt nebeneinander. Verwende dafür etwa docker compose -p testumgebung up -d. Das ist besonders praktisch, wenn du eine Änderung vor einem produktionsnahen Test isolieren willst.
Fazit
Docker Compose Grundlagen sind schnell gelernt, weil eine Datei den Aufbau einer Anwendung beschreibt. Nutze die aktuelle Compose Specification und den Befehl docker compose. Mit festen Image-Tags, Volumes, Healthchecks und getesteten Backups erhältst du eine Umgebung, die nicht nur bequem startet, sondern auch wartbar bleibt.
Quellen
- Docker Docs: Why use Compose?
- Docker Docs: Compose file reference
- Docker Docs: Compose-Plugin unter Linux installieren
Häufige Fragen
Docker Compose beschreibt mehrere zusammengehörige Container in einer YAML-Datei. Mit einem Befehl kannst du die Services als gemeinsames Projekt starten, prüfen und stoppen.
Für neue Projekte solltest du docker compose mit Leerzeichen verwenden. Das aktuelle Compose-Plugin ist in die Docker CLI integriert; docker-compose mit Bindestrich gehört zur älteren Standalone-Variante.
Nein. Die aktuelle Compose Specification ist das empfohlene Dateiformat. Die früheren 2.x- und 3.x-Formate wurden zusammengeführt, daher ist ein version-Eintrag für neue Dateien nicht nötig.
Standardmäßig entfernt der Befehl Container und Netzwerke, aber keine benannten Volumes. Mit der Option –volumes werden auch diese Volumes gelöscht; bei Datenbanken kann das gespeicherte Daten entfernen.
Vermeide echte Kennwörter direkt in der Compose-Datei. Nutze für lokale Entwicklung eine geschützte, nicht eingecheckte Umgebungsdatei und für produktive Geheimnisse die dafür vorgesehenen Secret-Mechanismen.





6 Pingbacks