In diesem Docker-Tutorial werden Methoden erläutert, um einen einzelnen Docker-Container, mehrere Docker-Container oder alle laufenden Docker-Container gleichzeitig zu stoppen. Außerdem erfahren Sie, wie Sie einen Docker-Container elegant anhalten.
Um einen Docker-Container zu stoppen, müssen Sie lediglich die Container-ID oder den Containernamen wie folgt verwenden:
docker stop container_ID_or_name
Sie können auch den Befehl docker container stop container_id_or_name verwenden, aber das ist ein zusätzliches Wort im Befehl und bietet keine zusätzlichen Vorteile, also bleiben Sie bei docker stop.
Aber es gibt noch mehr zum Stoppen eines Docker-Containers, das Sie wissen sollten, besonders wenn Sie ein Docker-Anfänger sind.
Praktische Beispiele zum Stoppen des Docker-Containers
In diesem Tutorial werde ich verschiedene Aspekte zum Stoppen eines Docker-Containers besprechen:
- Stoppen Sie einen Docker-Container
- Mehrere Docker-Container gleichzeitig stoppen
- Alle Docker-Container mit einem bestimmten Image stoppen
- Alle laufenden Docker-Container auf einmal stoppen
- Einen Docker-Container ordnungsgemäß stoppen
Bevor Sie das sehen, sollten Sie wissen, wie Sie den Containernamen oder die ID erhalten.
Mit docker ps
können Sie alle laufenden Docker-Container auflisten Befehl. Ohne Optionen zeigt der Befehl docker ps nur die laufenden Container an.
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 8 minutes ago Up About a minute container-2
94f92052f55f debian "bash" 10 minutes ago Up 10 minutes container-1
Die Ausgabe gibt Ihnen auch den Containernamen und die Container-ID. Sie können einen dieser beiden verwenden, um einen Container zu stoppen.
Kommen wir nun zum Stoppen von Containern.
1. Stoppen Sie einen Docker-Container
Um einen bestimmten Container zu stoppen, verwenden Sie seine ID oder seinen Namen mit dem docker stop-Befehl:
docker stop container_name_or_ID
Die Ausgabe hätte aussagekräftiger sein sollen, zeigt aber nur den Containernamen oder die ID, je nachdem, was Sie angegeben haben:
[email protected]:~$ docker stop 1bcf775d8cc7
1bcf775d8cc7
Sie können den Befehl docker stop für einen bereits gestoppten Container verwenden. Es werden keine Fehler oder eine andere Ausgabe ausgegeben.
Sie können überprüfen, ob der Container gestoppt wurde, indem Sie den Befehl docker ps -a verwenden. Die Option -a zeigt alle Container an, ob sie laufen oder gestoppt sind.
[email protected]:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 19 minutes ago Exited (0) About a minute ago container-2
94f92052f55f debian "bash" 29 minutes ago Up 29 minutes container-1
Wenn der Status Beendet ist, bedeutet dies, dass der Container nicht mehr ausgeführt wird.
2. Stoppen Sie mehrere Docker-Container
Sie können auch mehrere Docker-Container gleichzeitig stoppen. Sie müssen nur die Containernamen und -IDs angeben.
docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3
Wie zuvor zeigt die Ausgabe einfach den Namen oder die ID der Container:
[email protected]:~$ docker stop container-1 container-2 container-3
container-1
container-2
container-3
3. Stoppen Sie alle mit einem Bild verknüpften Container
Bisher haben Sie gesehen, dass Container durch explizite Nennung ihres Namens oder ihrer ID gestoppt wurden.
Was ist, wenn Sie alle laufenden Container eines bestimmten Docker-Images stoppen möchten? Stellen Sie sich ein Szenario vor, in dem Sie ein Docker-Image entfernen möchten, aber alle zugehörigen laufenden Container stoppen müssen.
Sie können die Containernamen oder IDs einzeln angeben, aber das ist zeitaufwändig. Was Sie tun können, ist, alle laufenden Container basierend auf ihrem Basis-Image zu filtern.
Ersetzen Sie einfach IMAGE_NAME durch den Namen Ihres Docker-Images und Sie sollten in der Lage sein, alle laufenden Container zu stoppen, die diesem Image zugeordnet sind.
docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
Die Option -q zeigt nur die Container-ID. Dank des wunderbaren xargs-Befehls werden diese Container-IDs als Argument an den Docker-Stopp geleitet.
4. Stoppen Sie alle laufenden Docker-Container
Es kann vorkommen, dass Sie alle laufenden Container stoppen müssen. Wenn Sie beispielsweise alle Container in Docker entfernen möchten, sollten Sie diese vorher stoppen.
Dazu können Sie etwas Ähnliches wie im vorherigen Abschnitt verwenden. Entfernen Sie einfach den Bildteil.
docker ps -q | xargs docker stop
5. Beenden Sie einen Container ordnungsgemäß
Um ehrlich zu sein, stoppt Docker einen Container standardmäßig ordnungsgemäß. Wenn Sie den Befehl docker stop verwenden, gibt er dem Container 10 Sekunden Zeit, bevor er zwangsweise beendet wird.
Das bedeutet nicht, dass es immer 10 Sekunden dauert, um einen Container zu stoppen. Wenn der Container einige Prozesse ausführt, hat er nur 10 Sekunden Zeit, um den Prozess zu stoppen und zu beenden.
Docker stop command sendet zuerst den SIGTERM-Befehl. Wird der Container in dieser Zeit angehalten, sendet er den SIGKILL-Befehl. Ein Prozess kann das SIGTERM ignorieren, aber SIGKILL beendet den Prozess sofort.
Ich hoffe, Sie kennen den Unterschied zwischen SIGTERM und SIGKILL.
Was ist SIGTERM? Was ist der Unterschied zwischen SIGKILL und SIGTERM? Sowohl SIGTERM als auch SIGKILL werden zum Beenden eines Prozesses in Linux verwendet. Sie sollten jedoch lieber SIGTERM verwenden. Hier ist der Grund! Linux-HandbuchAbhishek PrakashSie können diese Gnadenfrist von 10 Sekunden mit der Option -t ändern. Angenommen, Sie möchten 30 Sekunden warten, bevor Sie den Container stoppen:
docker stop -t 30 container_name_or_id
Am Ende…
Ich denke, dass diese vielen Informationen das Thema sehr gut abdecken. Sie wissen viel über das Stoppen eines Docker-Containers.
Bleiben Sie dran für weitere Docker-Tipps und Tutorials. Wenn Sie Fragen oder Anregungen haben, lassen Sie es mich bitte im Kommentarbereich wissen.