Docker Mini Swarm

Die Docker-eigene Orchestrierung: der Docker Swarm oder auch Stack. Man könnte auch sagen Totgesagte leben länger, denn die Swarm Technik von Docker sollte 2019 schon abgekündigt werden (bis 2021 mit 2-Jahresfrist). Davon ist man aber abgerückt und unterstützt Docker Swarm weiter ohne Limit.

An dieser Stelle nur zum reinschnuppern

Hinweis

Ich habe mich entschieden dieses Kurzkapitel zu Docker Swarm hier zu belassen, obwohl man diese Orchestrierung aktuell (2023) so gut wie nicht mehr einsetzt. Nicht ohne Grund unterstützen auch die Docker Entwicklungen die Kubernetes Orchestrierungen.

Bei vorherigen Übungen mit docker compose (s.o.) inkl. Volumes bitte vorher aufräumen/löschen!

Docker-Schwarm initieren: docker swarm init und dann kann man mit docker stack deploy einen Cluster mit nur einem Docker-Swarm-Mitglied (Mini-Swarm) nutzen.

# Docker Swarm initieren - Docker jetzt in besonderem Modus
docker swarm init                                      # Docker Swarm initieren

# Projektordner
cd test                                                # hier ist das docker-compose.yml
mkdir /var/dc-test-www                                 # Volume Wordpress HTML
mkdir /var/dc-test-db                                  # Volume MariaDB Databases

# wir können direkt mit docker-compose.yml Dateien arbeiten
docker stack deploy -c docker-compose.yml stacktest    # und los geht es...

docker stack rm stacktest                              # alles (bis auf Volumes) löschen!

Das Beispiel zeigt ganz schön die zusätzliche Abstraktionsebene beim Testen und Analysieren der Swarm-Container-Technik.

Testen einer WordPress-Installation im Browser: 172.20.0.2:8082 - das ist ein komplett anderes Subnetz!

Also: die Portumsetzung führt quasi eine Netzwerk-Ebene weiter (siehe GW-Netzwerk)! Die richtige IP (hier im Beispiel: 172.20.0.2) analysiert man mittels docker network ... (siehe inspect) oder natürlich einfach mit ip a s auf Docker Host: siehe GW-Bridge.

Der Docker läuft weiterhin im Swarm Modus! Beenden mit: docker swarm leave --force

Für Docker Swarm gibt es weitere Deploy-Einstellungen:

  • deploy.mode

  • deploy.placement.constraint ; Regeln: node.id, node.hostname, node.role

Wenn man mehrere Nodes (Docker Host Swarm Mitglieder) joint (docker swarm join ...) müssen weitere Vorbereitungen und Konfigurationen beachtet werden: insbesondere die Nutzung von Zeitservice NTP, damit die Nodes genau gleich ticken.

Tipp

Man sollte mal mit dem Docker Swarm spielen und erhält zwei Feedbacks/Erkenntnisse:

Die technische Nähe zu den Docker Compose Direktiven: docker-compose.yml vs. stack.yml

Die zusätzliche Abstraktionsebene wie hier für das Netzwerk. Das bereitet gedanklich gut auf Orchestrierungen wie Kubernetes vor.