Dive — Как заглянуть внутрь Docker-образа и сократить его размер

15 Dec, 2025

Репозиторий давно не обновлялся

Последнее обновление было 6 месяцев назад.

54,253
🔱 1,984
👥 365

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

Что такое Dive?

Dive — это консольная утилита, написанная на Go, которая анализирует Docker-образы, показывая их структуру, содержимое слоев и помогая находить способы уменьшения размера. Проект с открытым исходным кодом, доступный под лицензией MIT, уже собрал более 50 тысяч звезд на GitHub — явный признак его полезности для сообщества.

Демонстрация работы Dive

Ключевые возможности

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>

Практическое применение

  1. Оптимизация Dockerfile — находите слои, где добавляются большие файлы, которые потом удаляются, и оптимизируйте порядок команд.
  2. Отладка — проверяйте, какие именно файлы попадают в итоговый образ.
  3. Контроль качества — интегрируйте в CI/CD для автоматической проверки размера образов.

Dive — это must-have инструмент для любого разработчика, работающего с Docker. Он экономит часы ручного анализа, помогает создавать более компактные образы и в целом делает работу с контейнерами более осознанной.

Особенно рекомендую:

  • DevOps-инженерам
  • Разработчикам микросервисов
  • Всем, кто хочет оптимизировать свои Docker-образы

Проект активно развивается, имеет подробную документацию и простое управление с клавиатуры. Попробуйте — и вы удивитесь, сколько «лишнего» можно найти даже в казалось бы оптимизированных образах!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.