So halten Sie Docker-Container am Laufen, wenn der Daemon stoppt

0
374

Wenn Docker beendet wird, werden alle Ihre Container gestoppt. Die Standardinstallation lässt keine Container laufen, es sei denn, der Daemon ist ebenfalls aktiv. So minimieren Sie Ausfallzeiten der Arbeitslast, indem Sie Container während eines Daemon-Ausfalls am Leben halten.

Warum ist das wichtig?

Docker hat sich als zuverlässiges System erwiesen, das Lösungen in der Produktion unterstützen kann. Das heißt nicht, dass es unfehlbar ist. Es kann immer noch zu einem Absturz kommen, der den Daemon außer Gefecht setzt und Ihre Container offline nimmt.

In einem anderen Szenario aktualisiert der Paketmanager Ihres Betriebssystems Docker möglicherweise automatisch, was zu einem Neustart des Daemons und einer kurzen Ausfallzeit führt. Im Idealfall können diese Situationen ohne Auswirkungen auf Ihre Workloads gelöst werden. Da der Daemon nur Container verwaltet und Befehle wie docker run und docker rm implementiert, ist es nicht notwendig, dass er in der Zwischenzeit im Lebenszyklus eines Containers bestehen bleibt.

Container Live Restore

Docker unterstützt ein System namens “Live Restore” was dies ermöglicht. Anstatt Container während des Herunterfahrens des Daemons zu beenden, hält Docker sie am Laufen. Es wird nach dem Neustart dort weitermachen, wo es aufgehört hat.

Die Live-Wiederherstellung muss manuell aktiviert werden. Sie können es einmalig verwenden, indem Sie dockerd mit dem Flag –live-restore ausführen:

sudo dockerd –live-restore Advertisement

Um die Live-Wiederherstellung dauerhaft zu aktivieren, fügen Sie es zu Ihrem Docker-Daemon-Konfigurationsdatei. Diese finden Sie normalerweise unter /etc/docker/daemon.json. Sie müssen die Datei erstellen, wenn sie noch nicht vorhanden ist.

{ "live-restore": true }

Als Nächstes müssen Sie Docker anweisen, seine Konfiguration neu zu laden. Ein Neuladen hat keine Auswirkungen auf Ihre Container, im Gegensatz zu einem vollständigen Neustart des Daemons.

sudo systemctl reload docker

Die Live-Wiederherstellung sollte jetzt aktiviert sein. Sie können es testen, indem Sie den Docker-Daemon stoppen.

sudo systemctl stop docker

Alle laufenden Container sollten aktiv bleiben, auch wenn der Daemon heruntergefahren wird. Sie können keine Docker-Befehle verwenden, da die Daemon-Verbindung weg ist, aber die Container laufen weiter und behalten ihre Netzwerkverbindungen.

Docker erkennt beim Neustart automatisch die vorhandenen Container. Sie können dort weitermachen, wo Sie aufgehört haben, ohne Ausfallzeiten zu erleiden.

Handling Sustained Daemon-less Running

Das Ausführen von Containern ohne aktive Daemon-Verbindung sollte auch über einen längeren Zeitraum keine schwerwiegenden Folgen haben. Sie werden jedoch feststellen, dass Protokolle während eines längeren Daemon-Ausfalls verloren gehen.

Werbung

Docker-Container leiten ihre Protokolle in einen First-In-First-Out-Puffer (FIFO) weiter. Der Docker-Daemon liest den Pufferinhalt, um die persistenten Protokolldateien zu erstellen, die Sie mit Docker-Protokollen anzeigen.

Die Standardpuffergröße beträgt nur 64 KB, sodass er erschöpft sein kann, wenn der Daemon seinen Inhalt nicht aktiv liest . Wenn der Puffer gefüllt ist, können keine Protokolle mehr verarbeitet werden, bis der Daemon eine Pufferleerung abgeschlossen hat. Sie können die Puffergröße erhöhen, indem Sie den Wert von /proc/sys/fs/pipe-max-size bearbeiten.

Vorbehalte bei der Live-Wiederherstellung

< p>Live Restore sollte die meisten Szenarien abdecken, in denen der Docker-Daemon heruntergefahren und später wiederhergestellt wird. Dies schließt Docker-Updates ein, jedoch nur zwischen kleineren Patch-Releases. Wenn Sie eine neue Docker-Hauptversion (z. B. 19.03 bis 20.10) installieren, wird Live Restore nicht verwendet und der Docker-Daemon wird immer neu gestartet.

Sie sollten vorsichtig sein, Live Restore zu verwenden, um Docker-Daemon-Einstellungen im laufenden Betrieb zu bearbeiten. Das Ändern einiger Optionen, wie z. B. der Bridge-IP-Adressen, verhindert, dass Container beim Neustart des Daemon ordnungsgemäß wiederhergestellt werden. In diesem Fall müssen Sie alle betroffenen Container manuell stoppen und durch neue ersetzen. Diese Situation kann auch auftreten, wenn Ihr Betriebssystem nach einem Neustart ein anderes Netzwerk-Setup zuweist.

Live Restore ist für die Verwendung bei Docker-Updates und ungeplanten Daemon-Ausfällen vorgesehen. Wenn Sie Daemon-Einstellungen bearbeiten müssen, versuchen Sie stattdessen, Ausfallzeiten einzuplanen. Sie können auch systemctl reload docker verwenden, um Konfigurationsdateien neu zu laden, ohne den Daemon komplett neu zu starten.

Es gibt noch keine Live-Wiederherstellung für Windows-basierte Container. Sie können Live Restore unter Windows mit Linux-basierten Containern verwenden. Es ist in Docker Desktop integriert und wird über Einstellungen > Dämon > Erweitert.

Schlussfolgerung

Mit Live Restore können Sie Unterbrechungszeiten minimieren, indem Sie Container ohne Docker-Daemon am Laufen halten. Wenn Sie ein dringendes Docker-Update installieren müssen oder einen überraschenden Absturz haben, sollten Ihre Workloads betriebsbereit bleiben, während der Daemon neu gestartet wird.

Werbung

Die Aktivierung von Live Restore ist ein Best Practice-Schritt beim Ausführen von Docker in Produktion. Konfigurationsanalysetools kennzeichnen möglicherweise Installationen, für die es nicht aktiviert ist.

Über die Verwendung von Live Restore hinaus sollten Sie sicherstellen, dass Ihre Container auch über geeignete Neustartrichtlinien verfügen. Neustart verwenden: Lässt einzelne Container nach einem Neustart des Betriebssystems oder einem anderen Daemon-Start, bei dem Live Restore nicht verwendet werden konnte, immer wieder hochfahren.