Docker-Container mit Timeout stoppen
In diesem Schritt lernen wir, wie man einen Container mit einem spezifischen Timeout mithilfe des -t
oder --time
-Flags beim docker stop
-Befehl stoppt. Dies ermöglicht es Ihnen festzulegen, wie lange Docker warten soll, bis der Container nach dem Senden des SIGTERM
-Signals ordnungsgemäß beendet wird, bevor er gewaltsam mit SIGKILL
gestoppt wird.
Lassen Sie uns einen Container starten, den wir mit einem Timeout stoppen werden. Wir verwenden das ubuntu
-Image und ein Skript, das auf ein Signal wartet, bevor es beendet wird.
docker run -d ubuntu sh -c 'trap "exit 0" SIGTERM; sleep infinity'
Dieser Befehl startet einen ubuntu
-Container im Detached-Modus. Der Teil trap "exit 0" SIGTERM
richtet einen Trap ein, der das Skript veranlasst, sich ordnungsgemäß zu beenden, wenn es ein SIGTERM
-Signal empfängt. sleep infinity
hält den Container am Laufen, bis er das Signal empfängt.
Ermitteln Sie die Container-ID dieses neuen ubuntu
-Containers.
docker ps
Sie sollten den neuen ubuntu
-Container laufen sehen.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<timeout_container_id> ubuntu "sh -c 'trap \"exit 0\"…" X seconds ago Up X seconds <container_name>
<force_stop_container_id> ubuntu "sh -c 'trap \"\" SIGT…" Y minutes ago Exited Y minutes ago <container_name>
<nginx_container_id> nginx "nginx -g 'daemon off" Z minutes ago Exited Z minutes ago 80/tcp <nginx_container_name>
<ubuntu_container_id> ubuntu "sleep infinity" A minutes ago Exited A minutes ago <ubuntu_container_name>
Stoppen Sie nun diesen Container mit einem Timeout von 5 Sekunden unter Verwendung des -t
-Flags.
docker stop -t 5 <timeout_container_id>
Docker sendet das SIGTERM
-Signal und wartet 5 Sekunden. Da unser Container so eingerichtet ist, dass er bei SIGTERM
ordnungsgemäß beendet wird, sollte er innerhalb dieses Timeout-Zeitraums stoppen. Falls er innerhalb von 5 Sekunden nicht stoppt, würde Docker dann ein SIGKILL
senden.
Überprüfen Sie, ob der Container gestoppt wurde.
docker ps
Der Container sollte nicht mehr als laufend aufgeführt sein.
Die Verwendung des -t
-Flags ist nützlich, wenn Sie Ihrem Container eine bestimmte Zeitspanne für Aufräumarbeiten geben möchten, bevor er gewaltsam gestoppt wird.