Docker Live Restore aktivieren: Container bei einem Neustart des Docker-Dienstes weiterlaufen lassen¶
Veröffentlicht am 18. Oktober 2026 · Geschätzte Lesezeit: 7 Minuten
Ein Neustart oder Update des Docker-Dienstes beendet normalerweise alle laufenden Container – auch dann, wenn die Anwendungen darin mitten in einer wichtigen Aufgabe stecken. Mit der Funktion Live Restore bleibt der Docker-Daemon kurz unerreichbar, deine Container laufen aber unbehelligt weiter.[1] Das ist ideal für Wartungsfenster, Daemon-Upgrades oder den seltenen Fall eines Dienstabsturzes. Die Einrichtung dauert etwa 15 bis 25 Minuten, ein zusätzlicher Funktionstest rund 10 Minuten. Das Video Docker Restart Policies & Live Restore in Docker zeigt die Konzepte ergänzend.[4]
Voraussetzungen
- Ein Linux-Server mit installierter Docker Engine (systemd-basiert, kein Docker Desktop)
- Terminalzugriff mit
sudo-Rechten - Mindestens ein laufender, unkritischer Container zum Testen
- Die feste LAN-IP deines Docker-Hosts für den späteren Anwendungstest
1. Docker-Dienst und laufende Container erfassen¶
Prüfe zunächst, ob der Docker-Dienst läuft, und zeige alle aktiven Container an. Führe die Befehle auf dem Docker-Host aus:
Der erste Befehl meldet active bei einem laufenden Dienst, der zweite zeigt Namen, IDs und Status aller aktiven Container.[1] Notiere dir besonders die Container-IDs und Startzeiten – du brauchst sie später zum Vergleich.
Speichere die genauen Startzeitpunkte der laufenden Container für den späteren Test:
Falls keine Container laufen, starte zunächst einen vorhandenen, unkritischen Testdienst (etwa ein lokales Dashboard, einen Monitoring-Container oder einen Spielzeug-Dienst, den du schon eingerichtet hast). Der Artikel soll nicht zum Start eines beliebigen fremden Images auffordern.
2. Vorhandene Daemon-Konfiguration sichern¶
Erstelle ein root-geschütztes Backup-Verzeichnis und sichere die bestehende Konfiguration, falls vorhanden:
Existiert die Datei bereits, kopiere sie:
Fehlt die Datei (das ist der Normalfall bei einer frischen Docker-Installation), notiere dir das und fahre mit Schritt 3 fort. Die fehlende Datei ist kein Fehler – du legst sie neu an.
3. Konfiguration um Live Restore ergänzen¶
Öffne die Daemon-Konfigurationsdatei mit einem Editor. Verwende sudoedit, das die Umgebungsvariablen des aufrufenden Benutzers schützt:
Wird die Datei neu angelegt, setze folgenden Inhalt ein:
Enthält /etc/docker/daemon.json bereits andere Einstellungen (etwa log-driver oder debug), darf kein zweites äußeres JSON-Objekt angehängt werden. Ergänze stattdessen die neue Eigenschaft innerhalb des vorhandenen Objekts und achte auf das erforderliche Komma. Beispiel:
Entferne keine vorhandenen Schlüssel – jeder von ihnen hat einen Grund, dort zu stehen.[5]
4. JSON und Docker-Konfiguration prüfen¶
Lass das JSON-Format und die Daemon-Konfiguration von Docker selbst prüfen, bevor du sie aktivierst:
Der erste Befehl validiert reines JSON, der zweite prüft, ob docker alle Optionen kennt und korrekt verarbeitet.[2] Beide müssen ohne Fehlermeldung enden. Falls deine dockerd-Version --validate nicht kennt (sehr alte Versionen vor 2023), prüfe mindestens das JSON und behalte das Backup griffbereit. Die Option ist seit Docker 24.0 fest dokumentiert.[2]
5. Live Restore ohne Dienst-Neustart laden¶
Wende die Konfiguration an, ohne den Docker-Dienst neu zu starten – das ist der entscheidende Vorteil von Live Restore:
systemctl reload docker teilt dem Daemon mit, die Konfiguration neu zu lesen, ohne laufende Container zu berühren.[1] Der Dienst bleibt active. Der dritte Befehl muss true ausgeben – das bestätigt, dass Live Restore jetzt aktiv ist.
Prüfe zusätzlich, ob deine Container immer noch laufen:
6. Funktionstest: Docker-Dienst neu starten¶
Jetzt kommt der entscheidende Test: Starte den Docker-Dienst neu, als ob du ein planmäßiges Wartungsfenster oder ein Daemon-Update durchführen würdest:
Erwartung: Der Befehl kehrt ohne Fehler zurück. Anschließend prüfst du:
Der Dienst muss wieder active sein. Die Container müssen weiterhin laufen und dieselben IDs und Startzeiten haben wie in Schritt 1 – die StartedAt-Zeit darf sich nicht geändert haben.[3] LiveRestoreEnabled bleibt true.
Rufe außerdem die Anwendungen in den Containern über ihre normale lokale URL oder einen bekannten Health-Endpunkt auf, um sicherzustellen, dass die Dienste während des Neustarts nicht unterbrochen wurden:
Ersetze
Zeige anschließend die Docker-Protokolle des Neustarts an:
Das Journal zeigt eventuelle Warnungen, die Docker während des Neustarts ausgegeben hat.
Nachdem du die Funktion geprüft hast, kannst du einen vorhandenen, zuvor laufenden Container für einen zusätzlichen Test kurz stoppen, um zu zeigen, dass der manuelle Stopp nicht automatisch rückgängig gemacht wird:
Ersetze <containername> durch den genauen Namen aus docker ps (etwa archivebox_archivebox_1). Ein bewusst gestoppter Container bleibt gestoppt – Live Restore verhindert nur das ungewollte Beenden durch den Daemon, nicht die manuelle Steuerung.[1]
Stoppst du einen Container während der Daemon nicht erreichbar ist, wird der Stoppbefehl blockiert, bis der Daemon wieder antwortet.
Backup und Rückweg¶
Sollte etwas schiefgehen, nimm die Änderung zurück.
Fall 1 – Bestehende Datei wurde gesichert:
Anschließend Docker-Dienst neu starten:
Fall 2 – Datei wurde neu für Live Restore angelegt (keine weiteren Einstellungen):
Nach dem Rückweg prüfen:
LiveRestoreEnabled muss jetzt false oder null anzeigen. Lösch keine Volumes oder Containerdaten – der Rückweg betrifft nur die Daemon-Konfiguration.
Risiken und Grenzen¶
- Kein Hochverfügbarkeitsmechanismus: Live Restore ist kein Backup, kein Cluster und kein Ersatz für Compose-Restart-Policies. Ein ausgefallener Daemon kann deine Container nicht verwalten – sie laufen dann ohne Aufsicht weiter, bis der Daemon zurückkehrt.[1]
- Nur Standalone-Container: Die Funktion gilt für einzelne Container, nicht für Docker-Swarm-Services. Swarm-Services werden von Swarm-Managern gesteuert und sind von dieser Einstellung nicht betroffen.[1]
- Geänderte daemonweite Einstellungen: Änderst du während eines Live-Restore-Fensters wichtige Daemon-Optionen (Bridge-IP, Storage-Treiber, Data-Root), kann der neu startende Daemon die Verbindung zu den weiterlaufenden Containern möglicherweise nicht wiederherstellen.
- Major-Upgrades: Docker unterstützt Live Restore bei Upgrades nur für Patch-Releases (
YY.MM.x), nicht für Major-Upgrades (YY.MM). Wird eine Version übersprungen, kann die Verbindung zu den Containern ebenfalls verloren gehen.[1] - Log-Puffer: Läuft der Daemon längere Zeit nicht, können die FIFO-Log-Puffer der weiterlaufenden Container volllaufen (Standard: 64 KiB). Ein voller Puffer blockiert weitere Logausgaben und kann Anwendungsfehler auslösen.[1]
- Rootless Docker und Docker Desktop: Die beschriebene Konfiguration gilt für Docker Engine mit systemd auf Linux. Bei Rootless Docker liegt
daemon.jsonunter~/.config/docker/, bei Docker Desktop findest du die Einstellung im GUI unter Docker-Engine. Die dortigen Dienstverwaltungsbefehle weichen ab.
Typische Fehler¶
- Zweites JSON-Objekt angehängt: Die Datei darf nur genau ein äußeres Objekt
{ }enthalten. Ein zweites Objekt daneben macht die gesamte Konfiguration ungültig. - Komma vergessen: Fehlt das Komma zwischen
"log-driver": "local"und"live-restore": true, scheitert die JSON-Validierung. systemctl restart dockervor demreloadausgeführt: Dadurch werden alle Container beendet, bevor Live Restore aktiv ist. Aktiviere die Einstellung immer zuerst mitreload, dann teste mitrestart.- Widersprüchliche Konfiguration: Setze
live-restorenicht gleichzeitig indaemon.jsonund alsdockerd --live-restore-Startparameter. Docker startet dann nicht.[2] - Nur eine Webseite geprüft: Ein HTTP-Test allein kann einen Neustart des Containers überleben, wenn Docker ihn schnell neu startet. Vergleiche zusätzlich Container-ID und
StartedAt. - Live Restore mit
restart: unless-stoppedverwechselt: Die Restart-Policy startet beendete Container neu. Live Restore verhindert das Beenden beim Daemon-Ausfall. Beides sind unterschiedliche Schutzrichtungen, die sich ergänzen können.
Fertig¶
Dein Docker-Host besitzt jetzt die Fähigkeit, Container beim Neustart oder Ausfall des Docker-Dienstes weiterlaufen zu lassen.
Kurze Funktionsprüfung:
sudo systemctl is-active dockerzeigtactive.docker info --format '{{json .LiveRestoreEnabled}}'gibttrueaus.docker pszeigt dieselben Container mit denselben Startzeiten wie vor dem Neustart.- Die Anwendungen in den Containern sind nach einem
sudo systemctl restart dockerohne Unterbrechung erreichbar (HTTP-Status 200). sudo journalctl -u docker --since "-10 minutes" | grep -i "live.restore\|live_restore\|live restore"zeigt keine Fehler.
Sources¶
[1] https://docs.docker.com/engine/daemon/live-restore — Docker Docs: Live restore
[2] https://docs.docker.com/reference/cli/dockerd — Docker Docs: dockerd reference
[3] https://sleeplessbeastie.eu/2023/04/12/how-to-restart-docker-service-without-affecting-running-containers — sleeplessbeastie: Restart docker service without affecting running containers
[4] https://www.youtube.com/watch?v=hfaBgHgYqck — YouTube: Docker Restart Policies & Live Restore in Docker
[5] https://docs.docker.com/config/daemon — Docker Docs: Daemon configuration overview