Container mit spezifischem Signal neu starten
In diesem Schritt lernen Sie, wie Sie einen Docker-Container neu starten, indem Sie ein spezifisches Signal an den Hauptprozess des Containers senden. Während docker restart
standardmäßig ein Stopp-Signal (SIGTERM
) gefolgt von einem Kill-Signal (SIGKILL
) nach einem Timeout sendet, müssen Sie möglicherweise ein anderes Signal senden, abhängig von der im Container laufenden Anwendung. Dies können Sie erreichen, indem Sie den Container zunächst mit einem spezifischen Signal über docker stop
stoppen und ihn dann mit docker start
erneut starten.
Verwenden wir wieder den my-nginx
-Container. Stellen Sie sicher, dass er läuft.
docker ps
Falls er nicht läuft, starten Sie ihn:
docker start my-nginx
Nun werden wir den Container stoppen, indem wir das SIGKILL
-Signal senden. Dieses Signal beendet den Prozess sofort, ohne ihm die Möglichkeit zu geben, Aufräumarbeiten durchzuführen.
docker stop -s SIGKILL my-nginx
Sie sollten den Containernamen ausgegeben sehen, und wenn Sie docker ps
ausführen, sollte der Container nicht mehr aufgeführt sein.
docker ps
Der Container ist nun gestoppt. Um ihn neu zu starten, starten wir ihn einfach erneut.
docker start my-nginx
Der Container sollte nun wieder laufen. Überprüfen Sie dies mit docker ps
.
docker ps
Sie sollten my-nginx
mit dem Status Up
in der Liste sehen.
Während SIGKILL
ein erzwungener Stopp ist, können Sie auch andere Signale wie SIGHUP
oder SIGINT
senden, falls Ihre Anwendung dafür konfiguriert ist, um ordnungsgemäße Shutdowns oder Reloads durchzuführen. Die Standardkonfiguration des nginx
-Containers verarbeitet jedoch SIGTERM
ordnungsgemäß.
Lassen Sie uns den Container erneut stoppen, diesmal mit dem standardmäßigen SIGTERM
-Signal (welches das Standard-Signal für docker stop
ist, wenn kein Signal angegeben wird).
docker stop my-nginx
Überprüfen Sie, dass er gestoppt wurde:
docker ps
Starten Sie ihn nun ein letztes Mal.
docker start my-nginx
Verifizieren Sie, dass er läuft:
docker ps
Durch die Kombination von docker stop -s <signal>
und docker start
haben Sie eine feinere Kontrolle darüber, wie ein Container vor dem Neustart gestoppt wird.