developer blog

Docker Swarm

Docker Swarm ist ein Orchestrations-Werkzeug für Docker Container, das seit Version 1.12.0 fester Bestandteil der Docker Engine ist. Es ermöglicht den Betrieb von Containern auf einer Vielzahl von Docker Hosts durch Zusammenfassung dieser zu einem Cluster.

Batteries included

  • Integrierte Clusterverwaltung innerhalb der Docker Engine: Ein Docker Swarm kann über das Docker Engine Kommandozeilenwerkzeug erzeugt werden. Es wird keine weitere Software benötigt.
  • Dezentrales Design: Eine Docker Engine kann zugleich Manager und Worker sein. Die Rolle einer Node innerhalb des Swarms kann zur Laufzeit festgelegt werden.
  • Skalierbar: Die Anzahl an Containern die einen Service bereitstellen kann flexibel angepasst werden.
  • Zustandsverwaltung: Manager Nodes überwachen den Cluster-Zustand und gleichen Abweichungen zwischen Ist-Zustand und Soll-Zustand aus. Sollte z.B. eine Node ausfallen werden die auf dieser Node ausgeführten Replikate vom Manager neu erstellt.
  • Multi-host networking: Containern können in Overlay-Netzwerkem virtuelle IP-Adressen zugeordnet werden.
  • Service discovery: Manager Nodes geben jedem Service eindeutige DNS Namen und verteilen die Last auf die Container eines Services.
  • Lastverteilung: Neben der internen DNS Lastenverteilung können Services von extern über einen Port erreichbar gemacht werden. Ein Service kann somit über jede Node des Swarms angesprochen werden.
  • Sicher: Nodes innerhalb eines Swarms authentifizieren sich gegenseitig über TLS.
  • Rolling Updates: Services können innerhalb eines Swarms inkrementell aktualisiert werden.

Übersichtliches CLI UX

Docker

Das Einrichten eines Swarm Clusters besteht aus dem Initialisieren einer Manager Node und hinzufügen weiterer Manager und Worker Nodes.

Diese Schritte können mit einer übersichtlichen Anzahl an Befehlen durchgeführt werden:
  • docker swarm init (auf einer Manager Node)
  • docker swarm join --token [manager_token] (auf den restlichen Manager Nodes)
  • docker swarm join --token [worker_token] (auf den Worker Nodes

What's next?