Docker Compose erklärt: So orchestrieren Sie Container lokal und auf Servern

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.yml mit 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.

Related Articles