Со временем на сервере Docker может накопить много старых образов: после деплоев, тестовых сборок, CI/CD-прогонов и ручных экспериментов. Они занимают место, хотя контейнеры уже давно используют другие версии.
Сначала смотрим, сколько места занимает Docker:
docker system df
Так можно быстро понять, что именно разрослось: images, containers, volumes или build cache.
Посмотрим список образов вместе с датой создания:
docker images --format \
"{{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedSince}}\t{{.Size}}"
Если нужно найти dangling-образы, которые не имеют тега, используем фильтр:
docker images -f dangling=true
Обычно такие образы остаются после пересборок, когда старый слой уже не привязан к имени и тегу.
Перед удалением лучше сделать безопасный dry-run через список ID:
docker images -f dangling=true -q
Если список выглядит ожидаемо, удаляем их:
docker image prune
Для более агрессивной очистки можно удалить все неиспользуемые образы:
docker image prune -a
Но тут важно помнить: будут удалены не только
<none>, а все образы, которые сейчас не используются контейнерами.Если нужно ограничить очистку по времени, добавляем фильтр:
docker image prune -a \
--filter "until=168h"
Так Docker удалит неиспользуемые образы старше 7 дней.
После очистки снова проверяем место:
docker system df
Такая практика помогает держать Docker-хост в порядке и не ловить внезапное “no space left on device” во время деплоя.
➡️ DevOps Ready | #практика