Поиск по сайту:

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


Введение

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

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

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

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

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

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

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

  1. docker system prune

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

  1. docker system prune -a

Удаление образов Docker

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

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

Список:

  1. docker images -a

Удалять:

  1. docker rmi Image Image

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

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

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

Список:

  1. docker images -f dangling=true

Удалять:

  1. docker image prune

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

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

Список:

  1. docker images -a | grep "pattern"

Удалять:

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

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

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

Список:

  1. docker images -a

Удалять:

  1. docker rmi $(docker images -a -q)

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

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

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

Список:

  1. docker ps -a

Удалять:

  1. docker rm ID_or_Name ID_or_Name

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

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

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

  1. docker run --rm image_name

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

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

Список:

  1. docker ps -a -f status=exited

Удалять:

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

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

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

Список:

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

Удалять:

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

Удалите контейнеры в соответствии с шаблоном

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

Список:

  1. docker ps -a | grep "pattern

Удалять:

  1. docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

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

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

Список:

  1. docker ps -a

Удалять:

  1. docker stop $(docker ps -a -q)
  2. docker rm $(docker ps -a -q)

Удаление томов

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

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

Список:

  1. docker volume ls

Удалять:

  1. docker volume rm volume_name volume_name

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

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

Список:

  1. docker volume ls -f dangling=true

Удалять:

  1. docker volume prune

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

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

Удалять:

  1. docker rm -v container_name

Заключение

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

Подробный обзор различных компонентов контейнера Docker см. в статье Экосистема Docker: введение в общие компоненты.