Docker: очистка неиспользуемых ресурсов (system prune)
Команды для безопасной очистки Docker: образы, контейнеры, тома, build cache. Предупреждения, проверка места, автоматизация.
Как использовать
- Проверьте текущее использование: `docker system df`
- Безопасная очистка: `docker system prune` (без -a и --volumes)
- Для продакшена: очищайте конкретные ресурсы, не используйте -a --volumes
Команды для очистки неиспользуемых Docker-ресурсов: образы, контейнеры, тома и build cache. Важно понимать, что удаляется и когда это безопасно.
Базовые команды очистки
# 1. Удалить остановленные контейнеры, неиспользуемые сети, dangling образы
docker system prune
# 2. Удалить ВСЁ неиспользуемое (включая образы без контейнеров)
docker system prune -a
# 3. Удалить неиспользуемые тома (⚠️ ОСТОРОЖНО: может удалить данные!)
docker volume prune
# 4. Удалить неиспользуемые образы
docker image prune -a
# 5. Удалить build cache (освобождает много места)
docker builder prune
# 6. Полная очистка всего (контейнеры + образы + тома + сети + cache)
docker system prune -a --volumes
Безопасная последовательность
# Шаг 1: Проверить текущее использование
docker system df
# Шаг 2: Посмотреть, что будет удалено
docker images # образы
docker ps -a # контейнеры
docker volume ls # тома
# Шаг 3: Безопасная очистка (без --volumes и -a)
docker system prune
# Шаг 4: Проверить результат
docker system df
Очистка с фильтрами (рекомендуется)
# Удалить образы старше 24 часов
docker image prune -a --filter "until=24h"
# Удалить образы с конкретным тегом
docker image prune -a --filter "label=stage=dev"
# Удалить тома с конкретным лейблом
docker volume prune --filter "label=com.example.temp=true"
Проверка места до и после
# Использование диска Docker
docker system df
# Подробная информация
docker system df -v
# Размер конкретных образов
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
Автоматизация (cron)
# /etc/cron.weekly/docker-cleanup
#!/bin/bash
# Еженедельная безопасная очистка
docker system prune -f --filter "until=168h" # Старше недели
docker builder prune -f
Типичные ошибки
- ❌
--volumesна продакшене — удалит тома с данными БД, файлов приложений - ❌
-aбез проверки — удалит все неиспользуемые образы, включая те, что понадобятся - ❌ Очистка без
docker system df— неясно, что и сколько места занимает - ❌ Нет бэкапа перед очисткой — важные данные в томах могут быть потеряны
Где применять
- Dev/Local: безопасная очистка
docker system pruneраз в неделю - Staging: очистка с фильтрами по лейблам
- Production: только ручная очистка конкретных ресурсов, никогда
-a --volumes
Связанные сниппеты:
Документация: