Dive — Как заглянуть внутрь Docker-образа и сократить его размер
Репозиторий давно не обновлялся
Последнее обновление было 6 месяцев назад.
Знакомая ситуация: после сборки Docker-образа он занимает гораздо больше места, чем ожидалось? Или вы подозреваете, что в образ попали лишние файлы, но не знаете, как это проверить? На помощь приходит Dive — инструмент, который позволяет буквально «нырнуть» внутрь Docker-образов и исследовать их слой за слоем.
Что такое Dive?
Dive — это консольная утилита, написанная на Go, которая анализирует Docker-образы, показывая их структуру, содержимое слоев и помогая находить способы уменьшения размера. Проект с открытым исходным кодом, доступный под лицензией MIT, уже собрал более 50 тысяч звезд на GitHub — явный признак его полезности для сообщества.

Ключевые возможности
1. Визуализация слоев образа
Dive отображает содержимое каждого слоя Docker-образа в интерактивном TUI-интерфейсе. Левая панель показывает список слоев, а правая — файловую систему на текущем уровне. Переключаясь между слоями, вы видите, какие файлы были добавлены, изменены или удалены в каждом из них.
2. Анализ «пустого» пространства
Одна из самых полезных функций — оценка эффективности образа. Dive вычисляет, сколько места тратится впустую из-за:
- Дублирования файлов в разных слоях
- Удаления файлов в последующих слоях (которые всё равно остаются в истории)
- Неоптимального порядка команд в Dockerfile
3. Интеграция с CI/CD
Dive можно использовать в пайплайнах сборки для автоматической проверки образов:
CI=true dive <your-image>
Вы можете настроить правила в файле .dive-ci, например:
rules:
lowestEfficiency: 0.95
highestWastedBytes: 20MB
highestUserWastedPercent: 0.20
4. Поддержка разных движков
Dive работает не только с Docker, но и с:
- Docker Tar Archive
- Podman (только на Linux)
Как начать использовать
Установка через Homebrew (macOS):
brew install dive
Или через Docker:
docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive
После установки просто запустите:
dive <your-image-tag>
Практическое применение
- Оптимизация Dockerfile — находите слои, где добавляются большие файлы, которые потом удаляются, и оптимизируйте порядок команд.
- Отладка — проверяйте, какие именно файлы попадают в итоговый образ.
- Контроль качества — интегрируйте в CI/CD для автоматической проверки размера образов.
Dive — это must-have инструмент для любого разработчика, работающего с Docker. Он экономит часы ручного анализа, помогает создавать более компактные образы и в целом делает работу с контейнерами более осознанной.
Особенно рекомендую:
- DevOps-инженерам
- Разработчикам микросервисов
- Всем, кто хочет оптимизировать свои Docker-образы
Проект активно развивается, имеет подробную документацию и простое управление с клавиатуры. Попробуйте — и вы удивитесь, сколько «лишнего» можно найти даже в казалось бы оптимизированных образах!
