Есть ли какая-нибудь команда, которая может объединить команду docker stop и docker rm вместе? Каждый раз, когда я хочу удалить работающий контейнер, мне нужно последовательно выполнять 2 команды, мне интересно, может ли комбинированная команда упростить этот процесс.

docker stop CONTAINER_ID
docker rm CONTATINER_ID

mainframer

Ответов: 11

Ответы (11)

Вы можете использовать:

docker rm -f CONTAINER_ID

Контейнер будет удален, даже если он все еще запущен.

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

Вы также можете запускать свои контейнеры с параметром - rm, он будет автоматически удален при остановке.

https://docs.docker.com/engine/reference/run/#clean-вверх-пог.м

Изменить: rm -f может быть опасным для ваших данных и лучше всего подходит для контейнеров тестирования или разработки. Комментарий @ Bernard по этому поводу стоит прочитать.

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

docker rm -f CONTAINER_ID

Для удаления всех контейнеров

docker rm -f `docker container ps -qa`

удалить весь контейнер с xargs

docker ps -a -q | xargs docker rm 

для остановки всех

sudo docker ps -a -q |sudo  xargs docker stop 

удалить отдельный контейнер

docker rm -f 

Используйте команду docker ps с флагом -a, чтобы найти имя или идентификатор контейнеров, которые вы хотите удалить

docker ps -a

Чтобы удалить: $ docker rm ID_or_Name ID_or_Name

Удалить контейнер при выходе:

Если вы знаете, что при создании контейнера вы не захотите хранить его, когда вы закончите, вы можете запустить docker run --rm, чтобы автоматически удалить его при выходе.

Запуск и удаление: docker run --rm имя_образа

Удалить все закрытые контейнеры:

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

Список:

docker ps -a -f status=exited

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

Удалять контейнеры, используя более одного фильтра:

Фильтры Docker можно комбинировать, повторяя флаг фильтра с дополнительным значением. В результате получается список контейнеров, удовлетворяющих любому условию. Например, если вы хотите удалить все контейнеры, помеченные как «Создан» (состояние, которое может возникнуть при запуске контейнера с недопустимой командой) или «Выход», вы можете использовать два фильтра:

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

Остановить и удалить все контейнеры:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker stop CONTAINER_ID | xargs docker rm

Удалить все контейнеры: docker ps -aq | Докер xargs rm -f

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

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

https://www.ctl.io/developers/blog/post/gracefully-stopping-docker-containers/

Вы можете использовать kill, а также используя rm и флаг force, он также будет использовать kill.

В моем случае для удаления запущенных контейнеров я использовал

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

В случае, если вам также нужно удалить изображения, запустите docker rmi $ (docker images -q) потом.

Только запустите docker rmi $ (docker images -q), если вы хотите удалить образы.

Для удаления всех остановленных контейнеров docker system prune

Чтобы остановить живой контейнер, docker stop CONTAINER_ID ждет 10 секунд и вызывает docker kill CONTAINER_ID

Или с docker kill CONTAINER_IDможно сразу остановить контейнер

Вы можете остановить и удалить контейнер с помощью одной команды: $ _ дает вам последнее эхо

docker stop CONTAINER && docker rm $_

2022 WebDevInsider