Docker Compose hat grundlegend verändert, wie Entwickler containerisierte Anwendungen erstellen und betreiben, insbesondere wenn mehrere voneinander abhängige Services koordiniert werden müssen. Dieses Tool ersetzt die manuelle Verwaltung einzelner Container durch einen strukturierten, YAML-basierten Workflow und ermöglicht es Teams, komplette Anwendungsarchitekturen in einer einzigen Konfigurationsdatei zu definieren.
Für Ubuntu-Umgebungen bedeutet dies reproduzierbare Deployments, vereinfachtes Skalieren und geringeren Betriebsaufwand. Diese Anleitung bietet eine neue Perspektive auf die Installation und Nutzung von Docker Compose und liefert tiefere Einblicke in die praktische Umsetzung.
Bevor du mit diesem Tutorial beginnst, stelle sicher, dass Folgendes erfüllt ist:
Stelle eine Ubuntu-Cloud-Server-Instanz bei Hostman bereit.
Verfüge über ein Benutzerkonto mit sudo-Rechten oder Root-Zugriff, um Pakete zu installieren und Docker zu verwalten.
Docker muss installiert sein und auf dem Server laufen, da Docker Compose auf der Docker Engine aufsetzt.
Moderne Anwendungen bestehen häufig aus miteinander verbundenen Komponenten wie APIs, Datenbanken und Caching-Schichten. Diese Elemente einzeln mit Docker-Befehlen zu verwalten, wird mit zunehmender Komplexität schnell unübersichtlich. Docker Compose löst dieses Problem, indem alle Services, Netzwerke und Speicheranforderungen in einer docker-compose.yml-Datei definiert werden können. Dieser Ansatz sorgt für Konsistenz über alle Umgebungen hinweg – egal ob lokal auf einer Ubuntu-Maschine oder auf einem Cloud-Server.
Ein Beispiel: Eine Webanwendung besteht aus einem Node.js-Backend, einer PostgreSQL-Datenbank und einem Redis-Cache. Ohne Docker Compose müsste jede Komponente mit separaten docker run-Befehlen und präzisen Netzwerkparametern gestartet werden. Mit Compose werden diese Abhängigkeiten einmal definiert und können anschließend mit einem einzigen Befehl gestartet oder beendet werden.
Folge diesen Schritten, um Docker Compose auf deinem Ubuntu-System zu installieren.
Docker Compose ist eine Erweiterung von Docker. Überprüfe daher zuerst den Status des Docker-Dienstes:
sudo systemctl status docker
Wenn der Dienst nicht aktiv ist, starte ihn mit:
sudo systemctl start docker
Aktualisiere die Paketlisten, um Zugriff auf aktuelle Softwareversionen zu haben:
sudo apt-get update
Für eine sichere Kommunikation mit den Docker-Repositories werden folgende Pakete benötigt:
sudo apt-get install ca-certificates curl
Authentifiziere Docker-Pakete, indem du den kryptografischen Schlüssel hinzufügst:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Dieser Schritt stellt sicher, dass die Pakete während der Übertragung nicht manipuliert wurden.
Füge das Docker-Repository passend zu deiner Ubuntu-Version hinzu:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Der Befehl erkennt die Ubuntu-Version automatisch über VERSION_CODENAME.
Aktualisiere die Paketlisten und installiere das Compose-Plugin:
sudo apt update
sudo apt-get install docker-compose-plugin
Überprüfe die erfolgreiche Installation mit:
docker compose version
Beispielausgabe:
Docker Compose version v2.33.0
Zur Demonstration der Docker-Compose-Funktionen stellen wir einen Webserver mit Nginx bereit.
Erstelle ein Arbeitsverzeichnis:
mkdir ~/compose-demo && cd ~/compose-demo
Erstelle die Konfigurationsdatei:
nano docker-compose.yml
Füge folgenden Inhalt ein:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./app:/usr/share/nginx/html
Erklärung:
services: Wurzelelement zur Definition der Container
web: Benutzerdefinierter Servicename
image: Alpine-basiertes Nginx-Image mit geringem Ressourcenverbrauch
ports: Zuordnung von Port 8080 (Host) zu Port 80 (Container)
volumes: Synchronisiert das lokale app-Verzeichnis mit dem Web-Root des Containers
Lege die HTML-Struktur an:
mkdir app
nano app/index.html
Füge den folgenden HTML-Code ein:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
</body>
</html>
docker compose up -d
Docker Compose lädt das Nginx-Image automatisch herunter und konfiguriert das Netzwerk.
docker compose ps -a
Rufe lokal http://localhost:8080 oder auf einem Remote-Server http://<SERVER_IP>:8080 auf. Die Testseite sollte angezeigt werden.
Bei Problemen kannst du die Container-Logs prüfen:
docker compose logs web
Container stoppen:
docker compose stop
Alle Projektressourcen entfernen:
docker compose down
Diese Befehle erweitern das Container-Management:
docker compose up --build – Images vor dem Start neu erstellen
docker compose pause – Container anhalten, ohne sie zu beenden
docker compose top – Laufende Prozesse in Containern anzeigen
docker compose config – Konfiguration prüfen und anzeigen
docker compose exec – Befehle in laufenden Containern ausführen
(z. B. docker compose exec web nginx -t zum Testen der Nginx-Konfiguration)
Docker Compose verwandelt die Orchestrierung mehrerer Container von einer manuellen, fehleranfälligen Aufgabe in einen strukturierten und wiederholbaren Prozess. Durch die Installation von Docker Compose, das Definieren von Services in YAML und die Nutzung zentraler Befehle kannst du selbst komplexe Anwendungen zuverlässig verwalten.