Рубрики
Без рубрики

Демистифицирующий Кливер инструмента для контейнеров Google: Конструктор изображений Java

В этой статье рассматриваются некоторые внутренние элементы наслоения изображений, созданные с помощью конструктора изображений контейнеров Jib и expl… С тегами java, maven, контейнер.

В этой статье рассматриваются некоторые внутренние элементы наслоения изображений, созданные с помощью конструктора изображений контейнеров, и исследуется, что такое изображения без дистрибутива и их преимущества.

Вам интересно, что такое Кливер на самом деле?. Вам, вероятно, следует прочитать мою предыдущую статью , прежде чем идти дальше.

Jib – отличный инструмент для разработчиков Java, которые заинтересованы в контейнеризации Java-приложений, но не так заинтересованы в создании и обслуживании Dockerfile или установке Docker. Разработчик Java может добавить плагин в Maven или Gradle, и все. Вам не нужно изучать новые технологии только для того, чтобы контейнеризировать свое Java-приложение.

Теперь давайте поговорим о некоторых внутренних органах.

Наслоение изображений Кливера

Кливер разумно разделяет ваши изображения на следующие слои для более детальной инкрементной сборки.

  1. Зависимости
  2. Ресурсы
  3. Занятия
  4. Зависимости моментальных снимков
  5. Все остальные зависимости Каждый дополнительный каталог (кливер.дополнительные каталоги в Gradle, в Maven) создается на своем собственном уровне

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

Кроме того, чтобы копнуть глубже, теперь мы будем использовать простое приложение spring boot, которое использовалось в предыдущей статье . Исходный код доступен здесь . Мы запустим maven в режиме отладки, чтобы понять эти слои. Однако в следующих журналах вы увидите только зависимости, ресурсы и классы в виде отдельных слоев, поскольку у нас нет других зависимостей.

Слой Изображения Глубокого Погружения

Вы можете просматривать изображения, созданные с помощью кливера, с помощью инструмента Погружение . Как вы можете видеть на RHS, мы разнесли структуру каталогов для классов, ресурсов и зависимостей по следующему пути, и их размер очень минимален.

/приложения/классы,/приложения/библиотеки,/приложения/ресурсы

Остальное содержимое относится к вашему базовому изображению.

Погружение также сообщает вам, тратите ли вы впустую какое-либо пространство, и если да, то вы можете найти способы уменьшить размер вашего изображения Docker/OCI. Однако в нашем случае пространство не тратится впустую:).! Вы также можете просмотреть содержимое изображения с помощью команды “История настройки”. Давайте посмотрим, как это выглядит.

Что такое Образы бедствия?

Google определяет изображения без дистрибутива следующим образом:

Образы без дистрибутива – это облегченные базовые образы, поскольку они содержат только зависимости, необходимые для запуска вашего приложения. Они не содержат менеджеров пакетов, оболочек или любых других программ, которые вы ожидаете найти в стандартном дистрибутиве Linux.

Кроме того, слои, созданные с помощью кливера, создаются поверх базового изображения без дистрибутива. Кливер по умолчанию использует образ Java 8 без дистрибутива но у вас есть возможность выбрать изображение по вашему выбору.

Почему Страдание?

  1. Меньше уязвимостей для исправления
  2. Лучшая безопасность
  3. Построенный с минимальными зависимостями

Отладка Изображений Бедствия

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

Вывод

В этой статье мы рассмотрели некоторые внутренние аспекты кливера. т.е. наслоение изображений, что делает его быстрым. Мы также рассмотрели изображения без дистрибутива с их преимуществами и недостатками, такими как отладка.

Поддержи меня

Если тебе нравится то, что ты только что прочитал, можешь угостить меня кофе

Дальнейшее чтение

Вы также можете прочитать некоторые из моих предыдущих статей

Оригинал: “https://dev.to/yrashish/demystifying-google-container-tool-jib-a-java-image-builder-3lia”