Как удалить образы томов и контейнеров Docker в Linux

12 set 2022 4 min di lettura
Как удалить образы томов и контейнеров Docker в Linux
Indice dei contenuti

Введение

Docker позволяет легко упаковывать приложения и службы в контейнеры, чтобы их можно было запускать где угодно. Однако при работе с Docker также легко накопить чрезмерное количество неиспользуемых образов, контейнеров и объемов данных, которые загромождают вывод и занимают место на диске.

Docker предлагает все инструменты, необходимые для очистки вашей системы из командной строки. В этом руководстве по стилю шпаргалки содержится краткий справочник по командам, которые полезны для освобождения места на диске и поддержания порядка в системе путем удаления неиспользуемых образов, контейнеров и томов Docker.

Как пользоваться этим руководством:

  • Это руководство представлено в формате шпаргалки с отдельными фрагментами командной строки.
  • Перейдите к любому разделу, относящемуся к деятельности, которую вы пытаетесь выполнить.

Синтаксис замены command $(command), используемый в командах, доступен во многих популярных оболочках, таких как bash, zsh и Windows Powershell.

Удалите все неиспользуемые или приостановленные образы, контейнеры, тома и сети.

Docker предоставляет единственную команду, которая очистит все ресурсы (образы, контейнеры, тома и сети), которые зависли (не связаны с контейнером):

docker system prune

Чтобы еще больше удалить все неподвижные контейнеры и любые неиспользуемые изображения (не только ожидающие изображения), добавьте в команду флаг -a:

docker system prune -a

Удалить образы Docker

Удалите одно или несколько определенных изображений.

Используйте команду docker images с флагом -a, чтобы найти идентификатор образов, которые вы хотите удалить. Это покажет вам каждое изображение, включая промежуточные слои изображения. Когда вы найдете изображения, которые хотите удалить, вы можете передать их идентификатор или тег в docker rmi:

Перечислите изображения:

docker images -a

Удалить изображения:

docker rmi Image Image

Удалить висящие изображения

Образы Docker состоят из нескольких слоев. Ожидающие изображения — это слои, которые не имеют отношения ни к какому изображению с тегами. Они больше не служат цели и занимают место на диске. Их можно найти, добавив флаг фильтра -f со значением dangling=true в команду docker images. Когда вы уверены, что хотите удалить их, вы можете использовать команду docker images purge:

Примечание. Если вы создадите образ без тега, он появится в списке ожидаемых изображений, поскольку он не связан с тегированным изображением. Вы можете избежать этого , предоставив тег во время создания, и вы можете задним числом пометить образ с помощью команды docker tag.

Список ожидающих изображений:

docker images -f dangling=true

Удалить ожидающие изображения:

docker image prune

Удаление изображений по шаблону

Вы можете найти все образы, соответствующие шаблону, используя комбинацию docker images и grep. Если вы уверены, вы можете удалить их, используя awk для передачи идентификаторов в docker rmi. Обратите внимание, что эти утилиты не предоставляются Docker и не обязательно доступны во всех системах:

Список изображений с помощью grep:

docker images -a | grep "pattern"

Удалить изображения с помощью grep и awk:

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

Удалить все изображения

Все образы Docker в системе можно просмотреть, добавив -a к команде docker images. Если вы уверены, что хотите удалить их все, вы можете добавить флаг -q, чтобы передать идентификатор изображения в docker rmi:

Список всех изображений:

docker images -a

Удалить все изображения:

docker rmi $(docker images -a -q)

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

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

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

Список всех контейнеров:

docker ps -a

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

docker rm ID_or_Name ID_or_Name

Убрать контейнер на выходе

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

Запустить и удалить:

docker run --rm image_name

Удалите все контейнеры, которые вышли (выключил)

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

Список всех контейнеров Exited:

docker ps -a -f status=exited

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

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

Удаление контейнеров с использованием более одного фильтра

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

Список отфильтрованных контейнеров:

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

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

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

Снять контейнеры по схеме

Вы можете найти все контейнеры, соответствующие шаблону, используя комбинацию docker ps и grep. Когда вы удовлетворены тем, что у вас есть список, который вы хотите удалить, вы можете использовать awk и xargs для предоставления идентификатора команде docker rmi. Обратите внимание, что эти утилиты не предоставляются Docker и не обязательно доступны во всех системах:

Перечислите контейнеры по схеме:

docker ps -a | grep "pattern"

Снимите контейнеры по схеме:

docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

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

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

К списку:

docker ps -a

Удалять:

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

Удалить один или несколько определенных томов: Docker 1.9 и более поздние версии.

Используйте команду docker volume ls, чтобы найти имя или имена томов, которые вы хотите удалить. Затем вы можете удалить один или несколько томов с помощью команды docker volume rm:

Перечислите тома:

docker volume ls

Удалить тома:

docker volume rm volume_name

Удаление приостановленных томов — Docker 1.9 и более поздние версии

Поскольку точка томов не должна зависеть от контейнеров, при удалении контейнера том не удаляется автоматически одновременно. Когда том существует и больше не привязан к какому-либо контейнеру, он называется висячим томом. Чтобы найти их и подтвердить, что вы хотите их удалить, вы можете использовать команду docker volume ls с фильтром, чтобы ограничить результаты приостановленными томами. Когда вы уверены в списке, вы можете удалить их все с помощью docker volume prune:

К списку приостановленные объемы:

docker volume ls -f dangling=true

Удалять приостановленные объемы:

docker volume prune

Удалить контейнер и его объем

Если вы создали безымянный том, его можно удалить одновременно с контейнером с флагом -v. Обратите внимание, что он работает только с безымянными томами. При успешном удалении контейнера отображается его идентификатор. Обратите внимание, что не упоминается удаление тома. Если он безымянный, он автоматически удаляется из системы. Если он назначен, он остается молча присутствовать.

Удалять емкость и ее объем:

docker rm -v container_name

Вывод

В этом руководстве рассматриваются некоторые из наиболее распространенных команд, используемых для удаления образов, контейнеров и томов с помощью Docker. Есть много других комбинаций и флагов, которые можно использовать с каждой из них. Полное руководство по доступным возможностям см. в документации по Docker docker system prune, docker rmi, docker rm и docker volume rm.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.