Обновление, сентябрь 2016 г .: Docker 1.13: PR 26108 и commit 86de7c0 вводят несколько новых команд, чтобы упростить визуализацию того, сколько места занимают данные демона docker на диске и что позволяет легко очистить «ненужный» избыток.
docker system prune
удалит ВСЕ висячие данные (т.е. по порядку: контейнеры остановлены, тома без контейнеров и изображения без контейнеров). Даже неиспользованные данные, с -a
возможностью.
У вас также есть:
Для неиспользуемых изображений используйте docker image prune -a
(для удаления висячих и незапущенных изображений).
Предупреждение: « не используется » означает «изображения, на которые не ссылается ни один контейнер»: будьте осторожны перед использованием -a
.
Как показано в AL «s ответ , docker system prune --all
будут удалены все неиспользуемые изображения не только оборванных те ... , которые могут быть немного слишком много.
Объединение docker xxx prune
с --filter
опцией может быть отличным способом ограничения сокращения ( Docker SDK API минимум 1.28, поэтому docker 17.04+ )
В настоящее время поддерживаются следующие фильтры:
until (<timestamp>)
- удалять только контейнеры, изображения и сети, созданные до заданной отметки времени
label
( label=<key>
, label=<key>=<value>
, label!=<key>
, Или label!=<key>=<value>
) - только удалить контейнеры, изображения, сети и объемы с (или без , в случае , если label!=...
используется) указанные метки.
См. « Обрезать изображения » для примера.
Оригинальный ответ (сентябрь 2016 г.)
Я обычно делаю:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
У меня есть псевдоним для удаления этих [болтающихся изображений] 13 :drmi
dangling=true
Фильтр находит неиспользуемые изображения
Таким образом, любое промежуточное изображение, на которое больше не ссылается помеченное изображение, удаляется.
Я делаю то же самое в первую очередь для вышедших процессов (контейнеров)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Как haridsv баллов из в комментариях :
Технически, вы должны сначала очистить контейнеры перед очисткой изображений, так как это поймает больше висящих изображений и меньше ошибок .
Джесс Фразелль (jfrazelle) имеет функцию bashrc :
dcleanup(){
docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}
Чтобы удалить старые изображения, а не только изображения без привязок, вы можете рассмотреть следующие вопросы docker-gc
:
Простой Docker-контейнер и скрипт для сборки мусора изображений.
- Контейнеры, вышедшие более часа назад, удаляются.
- Изображения, которые не принадлежат ни одному из оставшихся контейнеров после этого, удаляются.
"dangling=true"
самом деле означает?