pojedyncze polecenie zatrzymania i usunięcia kontenera docker

138

Czy jest jakieś polecenie, które może łączyć polecenia docker stopi docker rmrazem? Za każdym razem, gdy chcę usunąć działający kontener, muszę wykonać 2 polecenia po kolei, zastanawiam się, czy istnieje połączone polecenie, które może uprościć ten proces.

docker stop CONTAINER_ID
docker rm CONTATINER_ID
mainframer
źródło
2
To zależy od kontenera: ctl.io/developers/blog/post/…
VonC

Odpowiedzi:

236

Możesz użyć :

docker rm -f CONTAINER_ID

Usunie pojemnik, nawet jeśli nadal działa.

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

Możesz także uruchomić swoje kontenery z --rmopcją, zostanie ona automatycznie usunięta po zatrzymaniu.

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

Edit:rm -f może być niebezpieczne dla danych i najlepiej nadaje się do badań lub rozwoju pojemników. Warto przeczytać komentarz @ Bernarda na ten temat.

vmonteco
źródło
15
Bądź ostrożny. docker rm -fwysyła sygnał SIGKILL do kontenera. Może to uniemożliwić pojemnikowi czas na prawidłowe zapisanie jego stanu. W przypadku kontenerów bezstanowych należy naprawdę użyć, docker stoppo którym następuje docker rm. Spowoduje to wysłanie sygnału SIGTERM, który domyślnie daje kontenerom maksymalnie 10 sekund na zakończenie ich zamknięcia, zanim demon Dockera ostatecznie wyśle ​​SIGKILL.
Bernard
3
uważam, że opcja --rm jest najbardziej odpowiednia dla kontenerów krótkotrwałych.
Prashant Sinha
30
docker stop CONTAINER_ID | xargs docker rm
ortex
źródło
Sprytny pomysł. Podoba mi się to, ponieważ można go również używać do innych poleceń, w których chcesz przekazać argument do dwóch poleceń bez ich powtarzania lub używania zmiennej.
Lion
16

Możesz zatrzymać i usunąć kontener za pomocą jednego polecenia, które $_daje ostatnie echo

docker stop CONTAINER && docker rm $_
Axel Monroy
źródło
7

W moim przypadku do usunięcia wszystkich uruchomionych kontenerów użyłem

docker rm -f $(docker ps -a -q); docker rmi $(docker images -q)
user9869932
źródło
2

Usuń wszystkie pojemniki: docker ps -aq | xargs docker rm -f

Andriy Tolstoy
źródło
Otrzymano odmowę pozwolenia - błąd. Dodano sudo. sudo docker ps -aq | sudo xargs docker rm -f
Hussain K
2

Spowoduje to zatrzymanie i usunięcie wszystkich obrazów, w tym uruchomionych kontenerów, tak jak używamy -f

docker rmi -f $(docker images -a -q)
Pranoy Gn
źródło
1

Użyj polecenia docker ps z flagą -a, aby zlokalizować nazwę lub identyfikator kontenerów, które chcesz usunąć

docker ps -a

Aby usunąć: $ docker rm ID_or_Name ID_or_Name

Usuń pojemnik po wyjściu:

Jeśli wiesz, kiedy tworzysz kontener, którego nie będziesz chciał zachować, gdy skończysz, możesz uruchomić docker run --rm, aby automatycznie usunąć go po zamknięciu.

Uruchom i usuń: docker run --rm image_name

Usuń wszystkie opuszczone pojemniki:

Możesz lokalizować kontenery za pomocą docker ps -a i filtrować je według ich stanu: utworzony, restartowany, uruchomiony, wstrzymany lub zakończony. Aby przejrzeć listę zamkniętych kontenerów, użyj flagi -f do filtrowania na podstawie statusu. Po zweryfikowaniu, że chcesz usunąć te kontenery, użyj -q, aby przekazać identyfikatory do polecenia docker rm.

Lista:

docker ps -a -f status=exited

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

Usuń pojemniki za pomocą więcej niż jednego filtra :

Filtry platformy Docker można łączyć, powtarzając flagę filtru z dodatkową wartością. Spowoduje to wyświetlenie listy kontenerów spełniających dowolny warunek. Na przykład, jeśli chcesz usunąć wszystkie kontenery oznaczone jako Utworzone (stan, który może powstać po uruchomieniu kontenera z nieprawidłowym poleceniem) lub Zakończone, możesz użyć dwóch filtrów:

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

Zatrzymaj i usuń wszystkie pojemniki:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Prakash AWS
źródło
0

Do wyjmowania pojedynczego pojemnika

docker rm -f CONTAINER_ID

Do usuwania wszystkich pojemników

docker rm -f `docker container ps -qa`
Abhinav Mehta
źródło
0

Aby usunąć wszystkie zatrzymane pojemniki docker system prune

Aby zatrzymać kontener na żywo, docker stop CONTAINER_IDczeka 10 sekund i wywołujedocker kill CONTAINER_ID

Lub za pomocą docker kill CONTAINER_IDmożesz natychmiast zatrzymać pojemnik

Nuriddin Kudratov
źródło