docker: удалить неиспользуемые образы
Со временем использования docker, у вас в системе скапливаются неактуальные и неиспользуемые образы, особенно если вы собираете свои приложения в образы, старые образы просто занимают дисковое место не неся никакой пользы.
Посмотреть список образов хранящихся у вас на диске вы можете командой
$ docker images
Удалить определенные образы по их ID можно следующим образом
$ docker rmi f4c991a4033f
Удалить все, неиспользуемые образы, от которых не зависит ни один контейнер можно следующей командой
$ docker image prune -a
Удаление образов, контейнеров, томов и сети Docker
Docker — инструмент для создания приложений с использованием контейнеров. При инициализации Docker появляются расходные файлы и объекты, которые необходимо очищать.
Вы можете удалять появившиеся структуры руками, но лучше оптимизировать эту задачу через командную строку.
Удаление контейнеров
Перейдите во вкладку «Containers/Apps» (веб Docker Desktop). Укажите, что нужно сделать с элементами и примените:
Также, способ, использую консоль. Команда для удаления — docker container rm. Синтаксис:
- docker container rm [параметры удаления] [ID объектов]
Параметры — (—force/-f — удаление контейнера в принудительном порядке), (—link/-l — удалить связь между элементами), (—volume/-v — удалить неопределенные тома, которые связаны с контейнером). ID получите с помощью команды — docker ps.
- —-all или -a: выводим все работающие контейнеры
- —filter или -f: фильтрация флагов
- —format: формат вывода
- —last или -n: вывод информации о последних n контейнерах
- —latest или -l: вывод информации о последнем контейнере
- —no-trunc: полный вывод
- —quiet или -q: отдельный вывод идентификационного номера
- —size или -s: вывод размера
С этими параметрами можно гибко взаимодействовать с группой контейнеров или отдельными единицами. Например, чтобы создать списки контейнеров на удаление — docker ps -a -f status=created -f status=exited, чтобы удалить — docker container rm $(docker ps -a -f status=created -f status=exited -q). Перед удалением лучше остановить предполагаемые контейнеры. Чтобы удалить все контейнеры:
- docker stop $(docker ps -a -q)
- docker container rm $(docker ps -a -q)
Удаление образов
Перейдите во вкладку «Images».
Чтобы удалить, найдите «Clean up…», выберите образы для удаления. Если образ в работе, просто удалить его не получится.
Через командную строку
docker rmi [параметры удаления] [ID образов]
Параметры:
- —force или -f: удалить образ в принудительном порядке
- —no-prune: не удалять непомеченные
Узнать ID образа:
- docker images [параметры] [REPOSITORY:[TAG]]
- —all или -a: выводим все образы. По умолчанию промежуточные будут скрыты;
- —digests: выводим дайджесты;
- —filter или -f: фильтр по флагам;
- —format: формат вывода;
- —no-trunc: не обрезать вывод;
- —quiet или -q: выводим только идентификаторы;
Запросите нужный список образов и используйте его как параметр для команды docker rmi. В качестве примера избавимся от образов, не привязанных к контейнерам. Для этого воспользуемся флагом dangling=true — docker images –filter dangling=true. Чтобы удалить список — docker rmi $(docker images –filter dangling=true -q). Чтобы удалить неработающие образы — команда docker image prune.
Удаление томов
Том — это файловая система, которая находится вне контейнеров, размещенная на хост-машине. Если вы хотите освободить пространство на диске от них, перейдите в раздел «Volumes», в правом верхнем углу выберите:
Чтобы удалить тома: docker volume rm [параметры] [имена томов]
Параметров у этой команды довольно мало, возможно принудительное удаление тома. Удалить можно только те тома, что не связаны с работающими контейнерами.
docker volume ls [параметры] — команда для определения имени тома. Параметры:
- —filter или -f: фильтр по флагам
- —format: формат вывода
- —quiet или -q: выводим только имена
Чтобы стереть тома, несвязанные с контейнерами — docker volume ls -f dangling=true. Команда для запуска удаления — docker volume rm $(docker volume ls -f dangling=true -q). Но можно обойтись и другой командой для удаления таких томов: docker volume prune.
Удалить сети
Чтобы удалить сети в Docker, используйте команду «docker network rm» со следующим синтаксисом:
docker network rm [Сетевые имена/идентификаторы]
Эта команда не имеет параметров. Вы можете передавать как имена, так и идентификаторы. Чтобы узнать имена и идентификаторы сетей, используйте «docker network ls»:
docker network ls [параметры]
Есть 4 параметра:
- —filter или -f: фильтровать по флагам
- —format: выходной формат
- —no-trunc: не обрезать вывод
- —quiet или -q: показать только идентификаторы
Перед удалением сети необходимо удалить объекты, которые ее используют. Чтобы узнать, какие контейнеры используют конкретную сеть, используйте следующую команду:
docker ps -f network=[ID сети]
После этого можно приступать к удалению сети. Например, чтобы удалить сети со значением driver=bridge:
docker network ls -f driver=bridge
docker network rm $(docker network ls -f driver=bridge -q)
Очистка Docker от всех объектов
Сначала остановить и удалить все контейнеры:
- docker stop $(docker ps -a -q)
- docker rm $(docker ps -a -q)
Удалить все образы:
- docker rmi $(docker images -a -q)
Удалить все тома:
- docker volume rm $(docker volume ls -a -q)
Удалить все сети:
- docker network rm $(docker network ls -a -q)
Как удалить образы Docker и освободить пространство

Сегодня контейнеры у нас повсюду, а самая популярная технология для управления ними — Docker. С его помощью вы можете легко запускать самые разнообразные приложения.
К сожалению, образы могут занять много дискового пространства, и в конечном итоге ваш диск будет переполнен.
В этом руководстве я расскажу, как проанализировать использование дискового пространства и почистить ресурсы Docker. Все, что для этого нужно, — запущенный демон Docker и терминал.
Как проанализировать, сколько места занимает Docker
Проверить занимаемое пространство можно при помощи следующей команды:
$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 61 16 21.1GB 15.25GB (72%) Containers 69 0 12.26MB 12.26MB (100%) Local Volumes 3 2 539.1MB 50.04MB (9%) Build Cache 76 0 1.242GB 1.242GB
Вы можете получить более подробную информацию, добавив опцию -v (verbose):
$ docker system df -v REPOSITORY TAG IMAGE ID CREATED SIZE SHARED teamatldocker/jira e50b8390945c 4 weeks ago 842.3MB 0B vw ed9e125a8925 2 months ago 1.659GB 134.8MB Containers space usage: CONTAINER ID IMAGE COMMAND SIZE 94e03a4a17d0 teamatldocker/jira "/sbin/tini -- /usr/…" 1.4MB Local Volumes space usage: VOLUME NAME LINKS SIZE play-with-jira_postgresqldata 1 84.19MB play-with-jira_jiradata 1 404.8MB Build cache usage: 1.242GB CACHE ID CACHE TYPE SIZE CREATED LAST USED oxil5sdicb91 regular 135MB 2 months ago 2 months ago kxz13fmdbodg regular 13B 2 months ago 2 months ago nysus21ej7pf regular 0B 2 months ago 2 months ago
Как видите, таким образом мы получаем сведения об использовании пространства образами, контейнерами, локальными томами, а также кэшем сборки.
Как вычистить все из Docker
Вы можете вычистить все, а можете подчистить определенные ресурсы — образы, тома контейнеров, кэш сборки.
Чтобы почистить все, кроме используемых компонентов, запустите следующую команду:
$ docker system prune -a
Опция -a включает неиспользуемые и «повисшие» контейнеры. Если не указать эту опцию, будут удалены только «повисшие» образы, т. е. образы без тегов, не связанные ни с какими другими образами.
Если хотите максимально вычистить ресурсы Docker , но сохранить образы с тегами, используйте следующую команду:
$ docker system prune
Это все, что нужно для быстрой очистки дискового пространства. Кроме того, компоненты можно удалять по отдельности.
Вот еще несколько полезных команд:
Удалить неиспользуемые и «повисшие» образы
$ docker image prune
Удалить только «повисшие» образы
$ docker image prune -a
Удалить остановленные контейнеры
$ docker container prune
Удалить неиспользуемые тома
$ docker volume prune
Как поддерживать эффективное использование дискового пространства
Вы можете запускать какие-то команды ежедневно или при входе в систему. Чтобы при автоматическом запуске пропустить обычное предложение, добавьте опцию -f к команде, которую хотите запускать.
Имейте в виду, что из-за регулярных чисток Docker вам придется гораздо чаще скачивать образы. Так что, если у вас нет проблем с нехваткой пространства, не заморачивайтесь. Просто подчищайте лишнее тогда, когда вам покажется, что Docker стал занимать слишком много места.
Итоги
При помощи команды docker можно очистить дисковое пространство разными способами. При желании вы даже можете запускать нужные команды автоматически и чистить ресурсы Docker регулярно.
Как удалить старые и не используемые образы Docker

Так как в Docker более менее адекватный механизм удаления старых образов и контейнеров появился в версии 1.13: PR 26108 (за счет параметра prune который удаляет все старые контейнеры volume без контейнеров и образа без контейнеров), но зная что с каждой новой версией кол-во багов и проблем ростет, я лично не рискую обновляться, потому использую такие механизмы:
Удаление всех не используемых images