Mehrere Docker-Hosts mit einem Stack verwalten
Mehrere Docker-Hosts mit einem Stack verwalten
Ab zwei Docker-Servern stellt sich die Frage: Wie managed man mehrere Hosts effizient, ohne sich jedes Mal per SSH einzuloggen?
Option 1: Docker Context — der einfachste Weg
Docker Context erlaubt es, mit einem einzigen CLI zwischen mehreren Docker-Hosts zu wechseln — ohne zusätzliche Software.
# Context für Remote-Server anlegen (via SSH)
docker context create myserver \
--docker "host=ssh://deploy@192.168.1.10"
# Verfügbare Contexts anzeigen
docker context ls
# Context aktivieren
docker context use myserver
# Jetzt gehen alle docker-Befehle an den Remote-Server
docker ps
docker compose up -d
# Zurück zum lokalen Docker
docker context use default
Einzelne Befehle ohne Context-Wechsel:
docker --context myserver ps
docker --context myserver compose -f stack.yml up -d
Option 2: DOCKER_HOST Umgebungsvariable
export DOCKER_HOST="ssh://deploy@192.168.1.10"
docker ps # → Remote-Host
unset DOCKER_HOST
docker ps # → lokaler Host
Nützlich für Skripte die einen bestimmten Host ansprechen sollen.
Option 3: Ansible für Compose-Deployments
Ansible kann Compose-Dateien auf mehrere Hosts deployen und Befehle parallel ausführen:
# playbook.yml
- hosts: docker_servers
tasks:
- name: Compose-Datei kopieren
copy:
src: docker-compose.yml
dest: /opt/myapp/docker-compose.yml
- name: Stack starten
community.docker.docker_compose_v2:
project_src: /opt/myapp
state: present
ansible-playbook playbook.yml -i inventory.yml
Option 4: Docker Swarm
Wenn Hochverfügbarkeit und Load Balancing benötigt werden, ist Swarm die Docker-native Lösung:
docker swarm init
docker stack deploy -c compose.yml mystack
Swarm verteilt Services automatisch auf verfügbare Nodes.
Option 5: Portainer Business
Portainer Business Edition bietet eine Web-GUI für Multi-Host-Management — jeder Docker-Host wird als "Environment" hinzugefügt und ist über eine zentrale Oberfläche verwaltbar.
Contexts im Team teilen
Docker-Contexts liegen in ~/.docker/contexts/. Sie lassen sich exportieren:
# Context-Konfiguration anzeigen
docker context inspect myserver
# Für Team: Context-Daten in ein gemeinsames Repo legen
# und als Setup-Skript bereitstellen:
docker context create myserver \
--docker "host=ssh://deploy@server.example.com"
SSH-Keys müssen auf dem Remote-Host hinterlegt sein — Docker Context nutzt OpenSSH für den Verbindungsaufbau.
SSH-Key für Deploy-User einrichten
# Key generieren (einmalig)
ssh-keygen -t ed25519 -C "docker-deploy"
# Public Key auf Remote-Host installieren
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@192.168.1.10
# Verbindung testen
ssh deploy@192.168.1.10 docker ps
Empfehlung
Für 2-5 Hosts: Docker Context — minimal, kein Extra-Tool, funktioniert mit bestehenden Compose-Workflows. Für größere Flotten oder Teams: Portainer oder Ansible. Für Hochverfügbarkeit: Swarm.