Docker Compose ist ein leistungsstarkes Tool, um Multi-Container-Anwendungen zu definieren, zu starten und zu verwalten. Es ermöglicht Entwicklern und IT-Profis, komplexe Umgebungen lokal oder auf Servern einfach zu orchestrieren, ohne jeden Container manuell starten zu müssen. In diesem Tutorial lernen Sie, wie Docker Compose funktioniert und wie Sie es praxisnah einsetzen können.
Was ist Docker Compose?
Docker Compose ist ein Open-Source-Werkzeug von Docker, mit dem mehrere Container als Einheit definiert und gestartet werden können. Anstatt einzelne Docker-Container manuell zu starten, beschreibt man die gesamte Anwendung in einer docker-compose.yml-Datei.
Vorteile von Docker Compose
- Einfaches Management von Multi-Container-Anwendungen
- Definition von Diensten, Netzwerken und Volumes in einer Datei
- Portabilität zwischen Entwicklungs- und Produktionsumgebungen
- Schnelles Hoch- und Runterfahren der gesamten Umgebung
Installation von Docker Compose
Docker Compose kann auf Linux, macOS und Windows installiert werden. Auf Linux erfolgt die Installation meist über den offiziellen GitHub-Release:
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
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
Grundlagen der docker-compose.yml
Die docker-compose.yml definiert Dienste, Netzwerke und Volumes einer Anwendung. Sie verwendet die YAML-Syntax, die leicht lesbar und strukturiert ist.
Beispiel einer einfachen docker-compose.yml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pass
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Erklärung der Struktur
- version: Legt die Compose-Dateiversion fest.
- services: Definiert einzelne Container-Dienste.
- image: Das Basis-Image des Containers.
- ports: Portweiterleitung zwischen Host und Container.
- environment: Umgebungsvariablen für den Container.
- volumes: Persistente Speicherung von Daten.
Docker Compose Befehle
Mit Docker Compose lassen sich die definierten Dienste einfach verwalten:
- Container starten:
docker-compose up -d - Container stoppen:
docker-compose down - Logs anzeigen:
docker-compose logs -f - Container neu starten:
docker-compose restart - Liste der Dienste anzeigen:
docker-compose ps
Netzwerke und Volumes in Docker Compose
Docker Compose erstellt automatisch ein eigenes Netzwerk für die Dienste. Benutzerdefinierte Netzwerke und Volumes ermöglichen flexiblere Szenarien.
Eigenes Netzwerk definieren
networks:
mein_net:
driver: bridge
Service mit Netzwerk verbinden:
services:
web:
image: nginx
networks:
- mein_net
Volumes für Datenpersistenz
volumes:
db_data:
Service mit Volume verbinden:
services:
db:
image: mysql
volumes:
- db_data:/var/lib/mysql
Praxisbeispiel: Lokale Entwicklungsumgebung
Ein typisches Szenario ist die lokale Entwicklung einer Webanwendung mit Datenbank:
- Frontend-Container (Nginx)
- Backend-Container (Python/Node.js)
- Datenbank-Container (MySQL/PostgreSQL)
Mit Docker Compose können alle Container mit einem einzigen Befehl gestartet werden:
docker-compose up -d
Deployment auf Servern
Docker Compose eignet sich auch für die Orchestrierung auf Servern. Dabei werden dieselben docker-compose.yml-Dateien verwendet, die lokal entwickelt wurden.
Beispiel: Deployment auf einem Linux-Server
scp docker-compose.yml user@server:/home/user/app
ssh user@server
cd /home/user/app
docker-compose up -d
Die Container laufen nun auf dem Server identisch wie lokal.
Tipps für effizientes Arbeiten mit Docker Compose
- Versionierung der
docker-compose.ymlmit Git für reproduzierbare Umgebungen. - Umgebungsvariablen in
.env-Dateien auslagern. - Regelmäßig nicht benötigte Container und Volumes aufräumen:
docker-compose down -v - Healthchecks für kritische Dienste definieren, um automatisches Monitoring zu ermöglichen.
Erweiterte Funktionen
Scaling von Diensten
Für Lasttests oder Hochverfügbarkeit können Dienste skaliert werden:
docker-compose up -d --scale web=3
Abhängigkeiten zwischen Diensten
Mit depends_on wird sichergestellt, dass Dienste in der richtigen Reihenfolge gestartet werden:
services:
web:
image: nginx
depends_on:
- db
Override-Dateien
Mit docker-compose.override.yml lassen sich Umgebungen individuell anpassen, ohne die Hauptdatei zu verändern.
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
Fazit
Docker Compose vereinfacht das Management von Container-Anwendungen erheblich. Ob lokal für die Entwicklung oder auf Servern für das Deployment, es bietet eine flexible, reproduzierbare und effiziente Methode, um Container orchestriert zu betreiben.
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.











