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.