Docker selbst aktualisieren - ohne laufende Container zu verlieren
Docker selbst aktualisieren - ohne laufende Container zu verlieren
Den Docker-Daemon zu aktualisieren klingt riskanter als es ist – mit der richtigen Vorbereitung überleben alle Container den Update-Vorgang.
Container überleben den Daemon-Neustart
Standardmäßig werden Container gestoppt wenn der Daemon anhält. Mit live-restore in der daemon.json laufen Container auch während des Daemon-Neustarts weiter:
// /etc/docker/daemon.json
{
"live-restore": true
}
Für Updates ohne Container-Downtime empfehlenswert. Für reguläre Nutzung ist restart: unless-stopped in Compose ausreichend – Container starten nach dem Update automatisch wieder.
Docker aktualisieren (Ubuntu/Debian)
# Aktuelle Version prüfen
docker version
# Paketliste aktualisieren
apt-get update
# Docker auf neueste Version aktualisieren
apt-get install --only-upgrade docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Version nach Update prüfen
docker version
Docker folgt semantischer Versionierung. Minor-Updates (26.0 → 26.1) sind in der Regel sicher. Major-Updates (25.x → 26.x) sollte man im Changelog prüfen.
Docker Compose Plugin separat aktualisieren
# Compose-Plugin-Version prüfen
docker compose version
# Update
apt-get install --only-upgrade docker-compose-plugin
Falls Compose als Binary installiert ist:
# Aktuelle Version von GitHub laden
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name"' | cut -d '"' -f 4)
curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-x86_64" \
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Repository für aktuelle Versionen einrichten
Falls Docker aus dem Standard-Ubuntu-Repo installiert wurde (ältere Versionen), auf das offizielle Docker-Repo wechseln:
# Altes Docker entfernen
apt-get remove docker docker-engine docker.io containerd runc
# Offizielles Docker-Repo hinzufügen
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
apt-get update && apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Vor dem Update: Backup
# Laufende Container und deren Konfiguration sichern
docker ps --format "{{.Names}}" > /tmp/running-containers.txt
docker compose config > /tmp/compose-config.yml
# Wichtige Volumes sichern (Datenbanken zuerst stoppen!)
docker compose stop db
docker run --rm -v dbdata:/data -v /backup:/backup alpine tar czf /backup/db-before-update.tar.gz -C /data .
docker compose start db
Nach dem Update prüfen
# Docker-Info anzeigen
docker info
# Alle Container laufen noch?
docker ps
# Test-Container starten
docker run --rm hello-world
Compose-Projekte nach Update
In der Regel müssen Compose-Container nach einem Docker-Update nicht neu erstellt werden. Ausnahme: wenn sich das Netzwerk-Subsystem geändert hat – dann hilft:
docker compose down
docker compose up -d