Docker Compose ist ein leistungsfähiges Werkzeug, um Multi-Container-Anwendungen auf Linux-Servern sauber zu strukturieren und zu verwalten. Es ermöglicht die Definition von Services, Netzwerken und Volumes in einer einzigen YAML-Datei, wodurch der Betrieb und die Reproduzierbarkeit von Container-Setups erheblich vereinfacht werden. In diesem Tutorial erklären wir Schritt für Schritt, wie Docker Compose installiert, konfiguriert und für produktive Anwendungen genutzt wird.
Voraussetzungen
Bevor Sie mit Docker Compose starten, sollten folgende Punkte erfüllt sein:
- Docker Engine ist auf dem Server installiert und lauffähig
- Root- oder sudo-Rechte vorhanden
- Ein grundlegendes Verständnis von Docker-Containern
- Netzwerkzugang zu offiziellen Repositories
# Docker Version prüfen
docker --version
Docker Compose installieren
Installation auf Linux
Die aktuelle Version von Docker Compose kann direkt über die offizielle GitHub-Seite bezogen werden:
# Compose Binary herunterladen (Beispiel: Version 2.21.0)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Binary ausführbar machen
sudo chmod +x /usr/local/bin/docker-compose
Version prüfen
docker-compose --version
Grundstruktur einer docker-compose.yml
Die YAML-Datei definiert die Container, Netzwerke und Volumes Ihrer Anwendung. Ein einfaches Beispiel:
version: '3.9'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- frontend
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: appdb
volumes:
- dbdata:/var/lib/mysql
networks:
- backend
networks:
frontend:
backend:
volumes:
dbdata:
Erklärung
- services: Definition der Container und deren Konfiguration
- volumes: Persistente Speicherorte für Daten
- networks: Isolierte Netzwerke für Container-Kommunikation
- environment: Umgebungsvariablen für Container
Docker Compose Befehle
Die wichtigsten CLI-Befehle zur Verwaltung von Docker Compose:
# Container im Hintergrund starten
docker-compose up -d
Container stoppen
docker-compose down
Logs anzeigen
docker-compose logs -f
Status der Services prüfen
docker-compose ps
Services neu starten (nach Änderung der YAML)
docker-compose up -d --build
Volumes und Datenpersistenz
Volumes sichern Daten auch nach dem Stoppen oder Neustarten von Containern:
# Volumes prüfen
docker volume ls
Volumes löschen (vorsichtig)
docker volume rm
Netzwerke sauber verwalten
Jeder Service kann einem oder mehreren Netzwerken zugeordnet werden:
# Eigene Netzwerke definieren
docker network create frontend
docker network create backend
Container einem Netzwerk zuordnen
docker network connect frontend web
Best Practices für Docker Compose
Strukturierung
- Services logisch gruppieren (z. B. Web, DB, Cache)
- Separate YAML-Dateien für Entwicklung, Test und Produktion nutzen
- Environment-Variablen über .env-Dateien verwalten
Sicherheit
- Keine sensiblen Passwörter direkt in der YAML-Datei speichern
- Secrets über Docker Secrets oder Umgebungsvariablen bereitstellen
- Nur offizielle und geprüfte Images verwenden
Ressourcenmanagement
- Limits für CPU und RAM setzen:
services:
web:
image: nginx
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
docker statsFehlerbehebung
Häufige Probleme und deren Lösungen:
- Container startet nicht:
docker-compose logs <service>prüfen - Portkonflikte: Prüfen, ob der Host-Port bereits belegt ist
- Datenpersistenz: Volumes korrekt mounten und Berechtigungen prüfen
- Netzwerkprobleme:
docker network inspect <network>nutzen
Versionierung und CI/CD
Docker Compose YAML-Dateien sollten in Versionskontrolle (z. B. Git) liegen. In CI/CD-Pipelines können Builds automatisiert werden:
# Beispiel für CI/CD Schritt
docker-compose -f docker-compose.prod.yml up -d --build
Fazit
Docker Compose ermöglicht eine klare Strukturierung von Multi-Container-Anwendungen und vereinfacht Betrieb, Updates und Monitoring. Durch sauberes Netzwerk-, Volume- und Ressourcenmanagement sowie Einhaltung von Sicherheitsrichtlinien lassen sich produktive Linux-Serverumgebungen effizient betreiben und warten.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











