Docker Swarm (auch „Swarm Mode“) ist die integrierte Container-Orchestrierung der Docker-Plattform. Damit lassen sich mehrere Docker-Hosts zu einem Cluster zusammenschließen und Container als Dienste über mehrere Maschinen verteilt betreiben — mit Lastverteilung, Service-Discovery und automatischen Neustarts.

So funktioniert Swarm Mode

Ein Swarm besteht aus Manager-Knoten (verwalten den Cluster-Zustand, nehmen Befehle entgegen) und Worker-Knoten (führen die Container aus). Die Manager nutzen den Raft-Konsens-Algorithmus, damit der Cluster-Zustand ausfallsicher bleibt. Dienste werden deklarativ definiert: Docker sorgt dafür, dass immer die gewünschte Anzahl Replikate läuft.

  • Dienst (Service): die gewünschte Definition eines Containers inklusive Replikat-Anzahl.
  • Aufgabe (Task): eine konkrete Instanz eines Dienstes auf einem Knoten.
  • Overlay-Netzwerk: verbindet Container über Knoten hinweg virtuell.

Wichtige Befehle

docker swarm init                  # Swarm starten, dieser Knoten wird Manager
docker swarm join --token <TOKEN> <Manager-IP>:2377   # Worker beitreten
docker service create --replicas 3 --name web nginx   # Dienst starten
docker service ls                  # Dienste auflisten
docker service scale web=5         # Replikate anpassen
docker node ls                     # Knoten im Cluster anzeigen

Swarm vs. Kubernetes

Während Kubernetes ein eigenständiges, sehr umfangreiches Orchestrierungssystem ist, ist Docker Swarm direkt in die Docker-Engine integriert und deutlich einfacher aufzusetzen. Swarm bietet Lastverteilung, Rolling Updates und Service-Discovery „out of the box“, Kubernetes ist dafür flexibler, skalierbarer und im Enterprise-Umfeld weiter verbreitet. Für kleinere Umgebungen mit wenigen Hosts ist Swarm oft die pragmatische Wahl.

Verwandte Grundlagen

Mehr zum Thema: Kubernetes, Kubelet, Container-Runtime, Container, docker-Befehle, Load Balancer.