Google представила инструмент container-diff для быстрого сравнения образов Docker-контейнеров
Новости
Google открыла доступ к удобному инструменту, позволяющему анализировать и сравнивать ключевые аспекты содержимого образов Docker-контейнеров.
2К открытий2К показов
Контейнеры 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.
А на картинке ниже представлен Dockerfile, наследующийся от базового образа с Python и устанавливающий в него пакеты mock и six. С помощью командыpip differ
можно получить список всех пакетов, установленных или изменённых в результате проделанных действий:
Это особенно полезно в ситуации, когда не понятно, какие пакеты могли быть по ошибке изменены или установлены после работы над зависимостями в модулях Python.
Анализ одного образа
У container-diff есть ещё одна замечательная возможность: он умеет анализировать один образ сам по себе. Эта функция позволяет пользователям быстро пройтись по основной информации, содержащейся в образе: установленные системные и языковые пакеты и содержание файловой системы.
Снова обратимся к базовому образу Debian. Вызов container-diff в ответ выдаёт список всех установленных пакетов вместе с их размерами и версиями:
Подобный анализ позволяет выявить самые тяжеловесные компоненты контейнера и ограничения по совместимости с создаваемой программой.
Более подробная информация и примеры доступны в документации на GitHub.
2К открытий2К показов