Docker Swarm - wann es gegenüber Compose Sinn macht

Docker Swarm - wann es gegenüber Compose Sinn macht

Docker Compose und Docker Swarm nutzen dasselbe YAML-Format — aber Swarm bringt Multi-Host-Clustering und echte Hochverfügbarkeit.

Der Unterschied auf einen Blick

Compose: Ein Host, ein Daemon, ideal für Entwicklung und einfache Produktionssetups. Kein Load Balancing zwischen Hosts, kein automatisches Failover.

Swarm: Mehrere Hosts, verteilte Workloads, Rolling Updates, Service-Replicas mit automatischem Failover.

Wann Swarm — wann Compose?

| Kriterium | Compose | Swarm |
|-----------|---------|-------|
| Anzahl Hosts | 1 | 2+ |
| Hochverfügbarkeit | Nein | Ja |
| Rolling Updates | Manuell | Eingebaut |
| Komplexität | Gering | Mittel |
| Lernkurve | Niedrig | Moderat |

Compose-Empfehlung: Ein Host, kleine Projekte, kein HA-Bedarf — Compose ist einfacher und ausreichend.

Swarm-Empfehlung: Mehrere physische Server, 24/7-Verfügbarkeit, Nodes sollen ausfallen können ohne Downtime.

Swarm initialisieren

# Auf dem ersten Manager-Node:
docker swarm init --advertise-addr 192.168.1.10

# Gibt einen Join-Token aus:
docker swarm join-token worker    # für Worker-Nodes
docker swarm join-token manager   # für weitere Manager
# Auf Worker-Nodes ausführen:
docker swarm join --token SWMTKN-1-... 192.168.1.10:2377
# Cluster-Status prüfen
docker node ls

Stack deployen

Swarm nutzt dieselben Compose-Dateien, erweitert um deploy:-Direktiven:

services:
  web:
    image: nginx:1.25
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
      placement:
        constraints:
          - node.role == worker
    ports:
      - "80:80"
docker stack deploy -c compose.yml mystack
docker stack ps mystack
docker stack services mystack

Rolling Update

# Image-Version im Compose ändern, dann:
docker stack deploy -c compose.yml mystack
# Swarm aktualisiert Container nacheinander (je nach update_config)

Swarm vs. Kubernetes

Swarm ist ideal, wenn Kubernetes zu komplex ist und Compose nicht mehr reicht. Für den Homelab-Bereich:

  1. Compose — Single Host, einfach
  2. Swarm — Multi-Host, HA gewünscht
  3. K3s — Kubernetes lernen, Edge-Setups

Portainer Community Edition bietet eine Web-GUI für Swarm-Cluster — empfehlenswert für Teams ohne CLI-Affinität.

Zusammenfassung

Swarm lohnt sich ab dem Moment, wo ein Server nicht mehr genug ist oder Rolling Updates ohne Downtime gebraucht werden. Für alles darunter: Compose ist das bessere Werkzeug — weniger Overhead, einfacher zu debuggen, gleiche YAML-Syntax.