Docker Context - mehrere Docker-Hosts über die CLI verwalten
Docker Context - mehrere Docker-Hosts über die CLI verwalten
Docker Context ist ein eingebautes Feature, das mehrere Docker-Hosts über die gewohnte CLI erreichbar macht — ohne SSH-Aliasse, ohne extra Tools.
Wie Docker Context funktioniert
Jeder Context speichert eine Verbindungskonfiguration: welcher Docker-Daemon soll angesprochen werden? Docker unterstützt SSH, TCP und Unix-Socket als Transport.
# Aktuellen Context anzeigen
docker context ls
# Ausgabe:
# NAME DESCRIPTION DOCKER ENDPOINT
# default * unix:///var/run/docker.sock
Context erstellen
Via SSH (empfohlen)
docker context create myserver \
--description "Produktionsserver" \
--docker "host=ssh://deploy@192.168.1.10"
Docker nutzt OpenSSH — SSH-Keys müssen eingerichtet sein:
# Key auf Remote-Server installieren
ssh-copy-id deploy@192.168.1.10
# Verbindung manuell testen
ssh deploy@192.168.1.10 "docker ps"
Via TCP (mit TLS)
docker context create myserver \
--docker "host=tcp://192.168.1.10:2376,ca=/certs/ca.pem,cert=/certs/cert.pem,key=/certs/key.pem"
Context nutzen
# Dauerhaft wechseln
docker context use myserver
# Alle Docker-Befehle gehen jetzt an myserver
docker ps
docker images
docker compose up -d
# Zurück zu lokalem Docker
docker context use default
Einmalig ohne Context-Wechsel
docker --context myserver ps
docker --context myserver images
docker --context myserver compose -f prod.yml up -d
Nützlich in Skripten: kein Zustand wird verändert, der Context bleibt auf default.
Compose mit Context
Docker Compose v2 unterstützt Context vollständig:
# Stack auf Remote-Host deployen
docker --context myserver compose -f docker-compose.prod.yml up -d
# Logs vom Remote-Stack lesen
docker --context myserver compose logs -f myapp
Context-Details anzeigen und löschen
# Alle Contexts
docker context ls
# Details eines Context
docker context inspect myserver
# Context entfernen
docker context rm myserver
Context-Konfiguration
Contexts werden unter ~/.docker/contexts/ gespeichert. Der aktive Context steht in ~/.docker/config.json:
{
"currentContext": "myserver"
}
DOCKER_HOST als Alternative
Für einmalige Aktionen oder CI/CD-Pipelines ist die Umgebungsvariable einfacher:
export DOCKER_HOST="ssh://deploy@192.168.1.10"
docker ps # → Remote
unset DOCKER_HOST
docker ps # → lokal
DOCKER_HOST überschreibt den aktiven Context.
Mehrere Server im Alltag
# Contexts anlegen
docker context create prod --docker "host=ssh://deploy@prod.example.com"
docker context create staging --docker "host=ssh://deploy@staging.example.com"
# Zwischen Servern wechseln
docker context use prod
docker ps
docker context use staging
docker ps
docker context use default
Zusammenfassung
Docker Context ist das am meisten unterschätzte Docker-Feature. Wer mehrere Server managed, spart sich SSH-Sessions und manuelle Host-Angaben. Der SSH-Transport ist dabei die empfohlene Option — sicher, ohne offene Ports, und mit bestehenden SSH-Keys direkt nutzbar.