одна команда для зупинки та вилучення контейнера докера


138

Чи є якась команда, яка може поєднувати команду docker stopта docker rmкоманду разом? Кожен раз, коли я хочу видалити запущений контейнер, мені потрібно виконувати 2 команди послідовно, мені цікаво, чи може комбінована команда спростити цей процес.

docker stop CONTAINER_ID
docker rm CONTATINER_ID

2
Це залежить від контейнера: ctl.io/developers/blog/post/…
VonC

Відповіді:


236

Ви можете використовувати:

docker rm -f CONTAINER_ID

Він видалить контейнер, навіть якщо він все ще працює.

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

Ви також можете запустити ваші контейнери з --rmопцією, вона буде автоматично видалена при зупинці.

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

Редагувати: це rm -fможе бути небезпечно для ваших даних і найкраще підходить для контейнерів для тестування або розробки. @ Коментар Бернарда з цього приводу варто прочитати.


15
Будь обережний. docker rm -fпосилає сигнал контейнера SIGKILL. Це може не дати часу контейнеру правильно зберегти його стан. Для НЕ контейнерів без громадянства один дійсно повинні використовувати docker stopпотім docker rm. Це посилає сигнал SIGTERM, який за замовчуванням надає контейнерам максимум 10 секунд для їх відключення, перш ніж демон докера нарешті надішле SIGKILL.
Бернард

3
Я знаходжу - rm варіант, найбільш підходящий для короткочасних контейнерів.
Прашант Сінга

30
docker stop CONTAINER_ID | xargs docker rm

Розумна ідея. Мені це подобається, оскільки його можна використовувати і для інших команд, де ви хочете передати аргумент на дві команди, не повторюючи їх і не використовуючи змінну.
Лев

16

Ви можете зупинити та вийняти контейнер за допомогою однієї команди, що $_дає останнє відлуння

docker stop CONTAINER && docker rm $_

7

У моєму випадку, щоб видалити всі запущені контейнери, я використовував

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



2

Це зупинить і видалить усі зображення, включаючи запущені контейнери, як ми використовуємо -f

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

1

Використовуйте команду docker ps із прапором -a, щоб знайти ім'я або ідентифікатор контейнерів, які ви хочете вийняти

docker ps -a

Для видалення: $ docker rm ID_or_Name ID_or_Name

Вийміть контейнер після виходу:

Якщо під час створення контейнера ви знаєте, що не хочете тримати його, коли ви закінчите, можете запустити докер-run - rm, щоб автоматично видалити його, коли він закривається.

Запустити та видалити: docker run --rm image_name

Видаліть усі вийшли контейнери:

Ви можете знайти контейнери за допомогою docker ps -a і відфільтрувати їх за станом: створений, перезапущений, запущений, призупинений або вийшов. Щоб переглянути список виїзних контейнерів, використовуйте прапор -f для фільтрування за статусом. Після перевірки потрібно видалити ці контейнери, використовуючи -q для передачі ідентифікаторів команді docker rm.

Список:

docker ps -a -f status=exited

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

Видаліть контейнери, використовуючи більше одного фільтра :

Докерні фільтри можна комбінувати, повторивши прапор фільтра з додатковим значенням. Це призводить до переліку контейнерів, які відповідають будь-якій умові. Наприклад, якщо ви хочете видалити всі контейнери, позначені як Створені (стан, який може призвести до запуску контейнера з недійсною командою) або Вийшов, ви можете використовувати два фільтри:

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

Зупинка та видалення всіх контейнерів:

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

0

Для вилучення одного контейнера

docker rm -f CONTAINER_ID

Для вилучення всіх контейнерів

docker rm -f `docker container ps -qa`

0

Щоб видалити всі зупинені контейнери docker system prune

Щоб зупинити живий контейнер, docker stop CONTAINER_IDзачекайте 10 секунд і він зателефонуєdocker kill CONTAINER_ID

Або з docker kill CONTAINER_ID, ви можете негайно зупинити контейнер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.