BASH
#docker#cleanup#prune#images#volumes#cache#devops

Docker: очистка неиспользуемых ресурсов (system prune)

Команды для безопасной очистки Docker: образы, контейнеры, тома, build cache. Предупреждения, проверка места, автоматизация.

Как использовать

  1. Проверьте текущее использование: `docker system df`
  2. Безопасная очистка: `docker system prune` (без -a и --volumes)
  3. Для продакшена: очищайте конкретные ресурсы, не используйте -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

Связанные сниппеты:

Документация: