Введение
Docker упрощает упаковку ваших приложений и сервисов в контейнеры, чтобы вы могли запускать их в любом месте. Однако при работе с Docker также легко накопить избыточное количество неиспользуемых образов, контейнеров и томов данных, которые загромождают вывод и потребляют место на диске.
Docker предоставляет вам все необходимые инструменты для очистки вашей системы из командной строки. Этот справочник в стиле шпаргалки предоставляет быстрый справочник по командам, которые полезны для освобождения места на диске и поддержания организованности вашей системы путем удаления неиспользуемых образов, контейнеров и томов данных.
Как использовать этот справочник:
- Этот справочник представлен в формате шпаргалки с самодостаточными фрагментами командной строки.
- Перейдите к любому разделу, который соответствует задаче, которую вы пытаетесь выполнить.
Примечание: Синтаксис подстановки команд, команда $(команда)
, используемый в командах, доступен во многих популярных оболочках, таких как bash, zsh и Windows Powershell.
Если вы хотите быстрый способ развернуть приложение Docker на живом сервере с одной кнопкой, ознакомьтесь с DigitalOcean App Platform.
Очистка всех неиспользуемых или висящих образов, контейнеров, томов и сетей
Docker предоставляет одну команду, которая очистит любые ресурсы — образы, контейнеры, тома и сети — которые висит (не помечены или не связаны с контейнером):
Для удаления дополнительно любых остановленных контейнеров и всех неиспользуемых образов (не только висящих образов), добавьте флаг -a
к команде:
Удаление образов Docker
Удалить один или несколько конкретных образов
Используйте команду docker images
с флагом -a
, чтобы найти идентификаторы изображений, которые вы хотите удалить. Это покажет вам все изображения, включая промежуточные слои изображений. Когда вы найдете изображения, которые хотите удалить, вы можете передать их идентификатор или тег в команду docker rmi
:
Список:
Удалить:
Примечание: Флаг -a
или --all
в команде docker images
отображает все Docker-изображения, включая промежуточные, которые не ссылаются на какие-либо теги. По умолчанию docker images
показывает только изображения с хотя бы одним тегом. Однако могут быть некоторые изображения без тегов, которые все еще занимают место на диске системы. Флаг -a
может быть полезен для идентификации изображений, которые можно обрезать для экономии места на диске. При использовании с командой docker rmi
также можно использовать флаг -f
или --force
для удаления изображений без тегов.
Удалить висячие Docker-изображения
Docker-изображения состоят из нескольких слоев. Висячие изображения – это слои, которые не имеют отношения к каким-либо помеченным изображениям. Они больше не служат никакой цели и занимают место на диске. Их можно найти, добавив флаг фильтра -f
со значением dangling=true
к команде docker images
. Когда вы уверены, что хотите их удалить, вы можете использовать команду docker image prune
:
Примечание: Если вы создадите образ без его пометки, он появится в списке висячих образов, потому что у него нет ассоциации с помеченным образом. Вы можете избежать этой ситуации, указав метку при создании, и вы можете дать обратную метку образу с помощью команды docker tag
.
Список:
Удаление:
Удаление образов по шаблону
Вы можете найти все образы, соответствующие шаблону, используя комбинацию docker images
и grep
. После удовлетворения, вы можете удалить их, используя awk
для передачи идентификаторов в docker rmi
. Обратите внимание, что эти утилиты не поставляются с Docker и не обязательно доступны на всех системах:
Список:
Удаление:
Удалите все изображения
Все образы Docker на системе можно просмотреть, добавив -a
к команде docker images
. Когда вы уверены, что хотите удалить их все, вы можете добавить флаг -q
, чтобы передать идентификатор образа в docker rmi
:
Список:
Удалить:
Удаление контейнеров
Удалить один или несколько конкретных контейнеров
Используйте команду docker ps
с флагом -a
, чтобы найти имя или ID контейнеров, которые вы хотите удалить:
Список:
Удалить:
Удалить контейнер при выходе
Если вы знаете заранее, что не захотите оставлять контейнер после завершения его использования, вы можете выполнить docker run --rm
, чтобы автоматически удалить его по завершении:
Запустить и удалить:
Удалить все завершенные контейнеры
Вы можете найти контейнеры, используя docker ps -a
и отфильтровать их по их статусу: created
, restarting
, running
, paused
или exited
. Для просмотра списка контейнеров со статусом exited
используйте флаг -f
для фильтрации по статусу. Когда вы убедитесь, что хотите удалить эти контейнеры, используйте -q
, чтобы передать их идентификаторы в команду docker rm
:
Список:
Удалить:
Удалить контейнеры, используя более одного фильтра
Фильтры Docker могут быть объединены путем повторения флага фильтра с дополнительным значением. Это приводит к списку контейнеров, которые соответствуют любому из условий. Например, если вы хотите удалить все контейнеры, помеченные либо как created
(состояние, которое может возникнуть, когда вы запускаете контейнер с недопустимой командой), либо как exited
, вы можете использовать два фильтра:
Список:
Удалить:
Удалить контейнеры в соответствии с шаблоном
Вы можете найти все контейнеры, которые соответствуют шаблону, используя комбинацию docker ps
и grep
. Когда вы удовлетворены тем, что у вас есть список для удаления, вы можете использовать awk
и xargs
для передачи ID в docker rm
. Обратите внимание, что эти утилиты не поставляются с Docker и не обязательно доступны на всех системах:
Список:
Удалить:
Остановите и удалите все контейнеры
Вы можете просмотреть контейнеры на вашей системе с помощью команды docker ps
. Добавление флага -a
покажет все контейнеры. Когда вы уверены, что хотите удалить их, вы можете добавить флаг -q
для передачи идентификаторов командам docker stop
и docker rm
:
Список:
Удалить:
Удаление томов
Удалить один или несколько конкретных томов
Используйте команду docker volume ls
, чтобы найти имя или имена томов, которые вы хотите удалить. Затем вы можете удалить один или несколько томов с помощью команды docker volume rm
:
Список:
Удалить:
Удалите висячие тома
Поскольку целью томов является существование независимо от контейнеров, когда контейнер удаляется, том не удаляется автоматически. Когда том существует и больше не подключен к каким-либо контейнерам, его называют висячим томом. Для их нахождения и подтверждения желания удалить их можно использовать команду docker volume ls
с фильтром, чтобы ограничить результаты только висячими томами. Когда вы удовлетворены списком, вы можете удалить их все с помощью docker volume prune
:
Список:
Удалить:
Удалить контейнер и его том
Если вы создаете безымянный том, его можно удалить одновременно с контейнером с помощью флага -v
. Обратите внимание, что это работает только с безымянными томами. Когда контейнер успешно удаляется, его идентификатор отображается. Обратите внимание, что никаких ссылок на удаление тома не делается. Если он безымянный, он молча удаляется из системы. Если он имеет имя, он молча остается присутствовать.
Удалить:
Заключение
Это руководство охватывает некоторые из общих команд, используемых для удаления образов, контейнеров и томов с помощью Docker. Существует множество других комбинаций и флагов, которые могут использоваться с каждым из них. Для подробного руководства по доступным возможностям смотрите документацию Docker для docker system prune
, docker rmi
, docker rm
и docker volume rm
. Если у вас есть типовые задачи по очистке, которые вы хотели бы видеть в руководстве, пожалуйста, спрашивайте или делайте предложения в комментариях.
Для подробного изучения различных компонентов контейнера Docker ознакомьтесь с Экосистемой Docker: Введение в Общие Компоненты.
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes