Google представила инструмент container-diff для быстрого сравнения образов Docker-контейнеров

Google открыла доступ к удобному инструменту, позволяющему анализировать и сравнивать ключевые аспекты содержимого образов Docker-контейнеров.
Docker + Google

Контейнеры Docker — прекрасное решение для ускорения разработки ПО, однако из-за их масштабности порой практически невозможно предугадать, как изменения в Dockerfile повлияют на соответсвующий контейнер. Это приводит к разрастанию образов и существенно затрудняет поиск ошибок.

В ответ на эту проблему команда Google Container Tools создала новый проект container-diff, предназначенный для быстрого сравнения образов контейнеров. По словам разработчиков, этот инструмент должен существенно облегчить разработку контейнерных приложений и отслеживание возникающих ошибок.

Краткий обзор container-diff

container-diff помогает разработчикам находить изменения, вычисляя семантические различия между двумя образами. Это значит, что инструмент ищет подвергшиеся изменению данные (на низшем уровне представления) и выдаёт полученную информацию на экран в удобочитаемом виде. Такой поисковый метод позволяет обнаруживать различия в системных и языковых пакетах, а также в файлах образа контейнера.

container-diff умеет сравнивать образы, сохранённые в разных форматах (с префиксом daemon:// для локального демона, remote:// — для удаленного и в расширении .tar при экспорте с помощью команды «docker save»). Это может оказаться особенно полезным при экспериментах с разными сборками контейнеров, которые разработчик пока ещё не готов выпустить. Новый инструмент поддерживает архивирование образов и registry protocol, благодаря чему может работать даже в средах без демона Docker.

Примеры и варианты использования

В качестве примера возьмём базовый Dockerfile, устанавливающий Python в базовый образ Debian. Запущенный на сравнение двух образов (старого и нового — с Python) container-diff предоставляет пользователям информацию обо всех пакетах, установленных в качестве зависимостей Python.

Первый пример — установка Python

А на картинке ниже представлен Dockerfile, наследующийся от базового образа с Python и устанавливающий в него пакеты mock и six. С помощью командыpip differможно получить список всех пакетов, установленных или изменённых в результате проделанных действий:

Второй пример — установка библиотек mock и six

Это особенно полезно в ситуации, когда не понятно, какие пакеты могли быть по ошибке изменены или установлены после работы над зависимостями в модулях Python.

Анализ одного образа

У container-diff есть ещё одна замечательная возможность: он умеет анализировать один образ сам по себе. Эта функция позволяет пользователям быстро пройтись по основной информации, содержащейся в образе: установленные системные и языковые пакеты и содержание файловой системы.

Снова обратимся к базовому образу Debian. Вызов container-diff в ответ выдаёт список всех установленных пакетов вместе с их размерами и версиями:

Анализ одного контейнера

Подобный анализ позволяет выявить самые тяжеловесные компоненты контейнера и ограничения по совместимости с создаваемой программой.

Более подробная информация и примеры доступны в документации на GitHub.

Источник: блог Google Open Source