🧙 Садовник: уточнил шаги, добавил проверки и обоснования. Примите, если полезно.
#1Сначала диск целиком, потом Docker отдельно:
docker system df разбивает по категориям: образы, контейнеры, тома, кэш сборки. Колонка RECLAIMABLE показывает, сколько можно освободить.
Подробнее — флаг -v.
docker system df -vС этого начинай — риска почти нет, а освобождается много:
Кэш сборки обычно самая жирная строка на сервере, где регулярно собирают образы. Его потеря стоит только времени следующей сборки.
docker builder pruneРазница принципиальная. Без -a удаляются только висячие слои — остатки пересборок. С -a удаляются все образы, на которых прямо сейчас не запущен ни один контейнер.
Фильтр until=24h оставляет свежее — то, что скачали сегодня для выкатки.
docker image pruneСмотри список и удаляй поимённо:
Никогда не запускай docker volume prune на сервере с базами, не посмотрев список. Том остановленной базы считается неприкреплённым.
docker volume ls -f dangling=trueРучная очистка работает один раз — потом про неё забывают. Рабочая схема из двух задач cron:
Разумные пороги в скрипте мониторинга:
Обязательно пиши логи — иначе при пропаже образа не узнаешь, кто его удалил и когда.
crontab -l