Konfigurieren von Container-Neustartrichtlinien (Restart Policies)
Docker ermöglicht es Ihnen, Neustartrichtlinien (restart policies) für Container zu konfigurieren. Eine Neustartrichtlinie bestimmt, ob ein Container nach dem Beenden automatisch vom Docker-Daemon neu gestartet werden soll. Dies ist eine entscheidende Funktion, um die Verfügbarkeit Ihrer Anwendungen sicherzustellen.
In diesem Schritt lernen Sie, wie Sie Neustartrichtlinien für Docker-Container konfigurieren.
Stoppen und entfernen wir zunächst den vorherigen my-nginx
-Container, um neu zu beginnen.
docker stop my-nginx
docker rm my-nginx
Führen wir nun einen neuen Nginx-Container mit der Neustartrichtlinie always
aus.
docker run -d --name my-nginx-always --restart=always -p 80:80 nginx
Das Flag --restart=always
weist Docker an, den Container immer neu zu starten, wenn er stoppt, unabhängig vom Exit-Code. Er startet den Container auch neu, wenn der Docker-Daemon startet.
Überprüfen Sie, ob der Container ausgeführt wird:
docker ps
Simulieren wir nun einen Containerausfall, indem wir ihn manuell stoppen.
docker stop my-nginx-always
Warten Sie einige Sekunden und überprüfen Sie dann den Containerstatus erneut:
docker ps
Sie sollten sehen, dass der Container my-nginx-always
automatisch vom Docker-Daemon neu gestartet wurde. Die Spalte STATUS
zeigt an, dass er seit kurzer Zeit Up
ist.
Weitere gängige Neustartrichtlinien sind:
no
: Den Container nicht automatisch neu starten (Standard).
on-failure
: Den Container nur neu starten, wenn er mit einem Exit-Code ungleich Null beendet wird (was auf einen Fehler hinweist). Optional können Sie die maximale Anzahl der Neustartversuche angeben (z. B. on-failure:5
).
unless-stopped
: Den Container immer neu starten, es sei denn, er wird explizit vom Benutzer gestoppt oder der Docker-Daemon wird gestoppt.
Probieren wir die Richtlinie on-failure
aus. Stoppen und entfernen Sie den aktuellen Container:
docker stop my-nginx-always
docker rm my-nginx-always
Führen Sie einen neuen Container mit der Richtlinie on-failure
aus:
docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx
Überprüfen Sie, ob er ausgeführt wird:
docker ps
Simulieren wir nun einen Fehler. Wir können dies tun, indem wir einen Befehl innerhalb des Containers ausführen, der mit einem Status ungleich Null beendet wird.
docker exec my-nginx-on-failure sh -c "exit 1"
Überprüfen Sie den Containerstatus nach einigen Sekunden:
docker ps
Der Container sollte automatisch neu gestartet worden sein, da er mit einem Status ungleich Null beendet wurde.
Neustartrichtlinien sind ein leistungsstarkes Werkzeug, um die Ausfallsicherheit Ihrer containerisierten Anwendungen zu gewährleisten. Durch die Konfiguration der entsprechenden Richtlinie können Sie die Wiederherstellung von Containern automatisieren, die unerwartet stoppen.