Einzelbefehl zum Stoppen und Entfernen des Docker-Containers


138

Gibt es einen Befehl, der den Befehl docker stopund kombinieren kann docker rm? Jedes Mal, wenn ich einen laufenden Container löschen möchte, muss ich zwei Befehle nacheinander ausführen. Ich frage mich, ob es einen kombinierten Befehl gibt, der diesen Prozess vereinfachen kann.

docker stop CONTAINER_ID
docker rm CONTATINER_ID

2
Es hängt vom Container ab: ctl.io/developers/blog/post/…
VonC

Antworten:


236

Sie können verwenden:

docker rm -f CONTAINER_ID

Der Container wird entfernt, auch wenn er noch läuft.

https://docs.docker.com/engine/reference/commandline/rm/

Sie können Ihre Container auch mit --rmOption ausführen. Diese werden beim Stoppen automatisch entfernt.

https://docs.docker.com/engine/reference/run/#clean-up-rm

Bearbeiten: Das rm -fkann für Ihre Daten gefährlich sein und eignet sich am besten für Test- oder Entwicklungscontainer. @ Bernards Kommentar zu diesem Thema ist lesenswert.


15
Achtung. docker rm -fsendet ein SIGKILL-Signal an den Container. Dadurch kann es sein, dass der Container keine Zeit hat, seinen Status korrekt zu speichern. Für nicht staatenlose Container sollte man wirklich docker stopgefolgt von verwenden docker rm. Dies sendet ein SIGTERM-Signal, das den Containern standardmäßig maximal 10 Sekunden Zeit gibt, um das Herunterfahren durchzuführen, bevor der Docker-Daemon schließlich ein SIGKILL sendet.
Bernard

3
Ich finde die Option --rm am besten für kurzlebige Container geeignet.
Prashant Sinha

30
docker stop CONTAINER_ID | xargs docker rm

Clevere Idee. Ich mag es, da es auch für andere Befehle verwendet werden kann, bei denen Sie ein Argument für zwei Befehle übergeben möchten, ohne sie zu wiederholen oder eine Variable zu verwenden.
Lion

16

Sie können den Container mit einem einzigen Befehl stoppen und entfernen, der $_Ihnen das letzte Echo gibt

docker stop CONTAINER && docker rm $_

7

In meinem Fall, um alle laufenden Container zu entfernen, habe ich verwendet

docker rm -f $(docker ps -a -q); docker rmi $(docker images -q)


2

Entfernen Sie alle Behälter: docker ps -aq | xargs docker rm -f


Fehler wurde verweigert. Sudo hinzugefügt. sudo docker ps -aq | sudo xargs docker rm -f
Hussain K

2

Dadurch werden alle Bilder angehalten und entfernt, einschließlich der laufenden Container, während wir -f verwenden

docker rmi -f $(docker images -a -q)

1

Verwenden Sie den Befehl docker ps mit dem Flag -a, um den Namen oder die ID der Container zu suchen, die Sie entfernen möchten

docker ps -a

So entfernen Sie: $ docker rm ID_oder_Name ID_oder_Name

Entfernen Sie einen Behälter beim Verlassen:

Wenn Sie beim Erstellen eines Containers wissen, dass Sie ihn nicht mehr behalten möchten, wenn Sie fertig sind, können Sie Docker run --rm ausführen, um ihn beim Beenden automatisch zu löschen.

Ausführen und entfernen: docker run --rm image_name

Entfernen Sie alle verlassenen Behälter:

Sie können Container mit Docker ps -a suchen und nach ihrem Status filtern: erstellt, neu gestartet, ausgeführt, angehalten oder beendet. Verwenden Sie zum Überprüfen der Liste der verlassenen Container das Flag -f, um nach dem Status zu filtern. Wenn Sie überprüft haben, dass Sie diese Container entfernen möchten, übergeben Sie die IDs mit -q an den Befehl docker rm.

Aufführen:

docker ps -a -f status=exited

docker rm $(docker ps -a -f status=exited -q)

Entfernen Sie Behälter mit mehr als einem Filter :

Docker-Filter können kombiniert werden, indem das Filter-Flag mit einem zusätzlichen Wert wiederholt wird. Dies führt zu einer Liste von Containern, die beide Bedingungen erfüllen. Wenn Sie beispielsweise alle Container löschen möchten, die entweder als Erstellt (ein Status, der auftreten kann, wenn Sie einen Container mit einem ungültigen Befehl ausführen) oder Beendet markiert sind, können Sie zwei Filter verwenden:

docker ps -a -f status=exited -f status=created

Halten Sie an und entfernen Sie alle Behälter:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

0

Zum Entfernen eines einzelnen Behälters

docker rm -f CONTAINER_ID

Zum Entfernen aller Behälter

docker rm -f `docker container ps -qa`

0

Alle angehaltenen Behälter entfernen docker system prune

docker stop CONTAINER_IDWarten Sie 10 Sekunden, um den Live-Container zu stoppen, und rufen Sie andocker kill CONTAINER_ID

Oder mit docker kill CONTAINER_IDkönnen Sie den Container sofort stoppen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.