Docker Swarm
Docker Swarm ist ein Cluster- und Scheduling-Tool für Docker-Container. Mit Docker Swarm können Docker-Cluster erstellt und wie ein einziges virtuelles System verwaltet werden. Clustering ist eine wichtige Funktion für die Container-Technologie, weil sich so kooperative Systemgruppen erstellen lassen, die durch Redundanz einem Node-Ausfall vorbeugen können. Clustering bietet Administratoren und Entwicklern auch die Möglichkeit, Container-Iterationen hinzuzufügen oder zu entfernen, wenn sich Compute-Anforderungen ändern.
Docker Swarm stellt über das Scheduling sicher, dass immer ausreichend Kapazitäten für verteilte Container vorhanden sind. Das Docker-Tool weist Container zugrundeliegenden Nodes zu und optimiert Ressourcen durch das automatische Scheduling von Container-Workloads, wodurch diese immer auf dem optimalen Host ausgeführt werden. Damit stellt Docker Swarm ein grundlegendes Workload-Balancing für Container sowie eine ausreichende Ressourcen-Abdeckung zur Verfügung.
Docker Swarm nutzt die Standard-Schnittstellen von Docker. Administratoren verwalten Swarm über den Swarm Manager, der Orchestrierung und Scheduling der Container übernimmt. Über den Swarm Manager kann eine primäre Manager-Instanz mit multiplen Replica-Instanzen erstellt werden, falls die primäre Instanz ausfällt.
Docker Swarm nutzt drei unterschiedliche Strategien um zu bestimmen, auf welchem Node ein Container ausgeführt werden soll:
- Spread: Stellt die Standardeinstellung dar und gleicht die Container über die einzelnen Nodes eines Clusters auf Basis der verfügbaren RAM- und CPU-Kapazitäten aus. Der Vorteil der Spread-Strategie liegt darin, dass bei einem Ausfall eines Nodes nur wenige Container betroffen sind.
- BinPack: Container nutzen jeden Node vollständig aus. Sobald ein Node voll ist, wird der nächste Node im Cluster verwendet. Die BinPack-Strategie hat den Vorteil, dass so nur ein kleiner Teil der Infrastruktur verwendet wird und größeren Containern mehr Platz zur Verfügung steht.
- Random: Die Random-Strategie verwendet einen zufälligen Node.
Docker Swarm verwendet fünf Filter für das Container-Scheduling:
- Constraint: Auch als Node-Tags bekannt. Constraints sind Schlüssel-/Wert-Paare, die einem bestimmten Node zugewiesen werden. Anwender können einen Teilbereich der Nodes auswählen wenn ein Container erstellt wird, und ein oder mehrere Schlüssel-/Wert-Paare spezifizieren.
- Affinity: Damit sichergestellt wird, dass Container auf dem gleichen Netzwerk-Node ausgeführt werden, nutzt der Affinity-Filter Identifier, Image oder Label für die Container-Zuweisung.
- Port: Ports stellen eine einzigartige Ressource dar. Wenn ein Container auf einem Port ausgeführt werden soll, der bereits verwendet wird, wird er einfach zum nächsten Node im Cluster wechseln.
- Dependency: Wenn Container Abhängigkeiten untereinander aufweisen, dann sorgt dieser Filter dafür, dass sie auf demselben Node ausgeführt werden.
- Health: Falls ein Node Fehlfunktionen aufweist, wird durch diesen Filter die Zuweisung von Containern auf den Node verhindert.
Docker Swarm wurde im Februar 2015 von Docker vorgestellt und reagiert auf den zunehmenden Orchestrierungsbedarf in Container-Umgebungen. Eine Alternative zu Docker Swarm wäre Google Kubernetes, das bereits länger auf dem Markt ist und auch häufiger eingesetzt wird.