Типы образов контейнеров#
Образ контейнера представляет собой бинарный файл, включающий все требования для запуска одного контейнера, и метаданные, описывающие его потребности и возможности.
Существует два типа образов контейнеров:
Базовые образы SberLinux OS;
Универсальные базовые образы (UBI).
Оба типа создаются на основе SberLinux OS.
Основное различие между ними заключается в том, что образами UBI можно делиться с другими пользователями. При создании контейнеризованного приложения с помощью UBI оно отправляется на выбранный сервер реестра. Это позволяет поделиться им и разворачивать на других платформах. Образы UBI создавались как основа для сценариев использования облачных и веб-приложений, разработанных в контейнерах.
Общие характеристики образов контейнеров#
Следующие характеристики применимы к базовым образам SberLinux OS и к образам UBI.
Образы контейнеров делятся на:
Supported - поддерживают использование с контейнеризированными приложениями. Содержат защищенные и протестированные пакеты ПО;
Updated - предлагают определенный график обновлений для получения последней версии ПО;
Reusable - требуют однократной загрузки в рабочую среду и кеширования в ней. Каждый образ может повторно использоваться контейнерами, содержащим его в качестве основы.
Характеристики образов UBI#
UBI-образы делятся на: micro, minimal, standard и init. Для создания приложений доступны готовые образы, включающие среду выполнения программных языков и репозитории DNF.
К образам UBI применимы следующие характеристики:
Создаются на основе подмножества содержимого SberLinux OS;
Распространяются, обеспечивая стандартизацию для клиентов, интернет-провайдеров и других. С помощью образов UBI доступно создание образов контейнеров на основе ПО, которым можно свободно делиться и развертывать;
Существуют в четырех вариантах;
Содержат набор готовых образов контейнеров среды выполнения языка программирования - служат основой для приложений, если базируются на Application Streams. Приложения могут использовать стандартные, поддерживаемые среды выполнения, такие как
python,php,dotnet,nodejsиruby;Предоставляют набор связанных репозиториев DNF, включающие пакеты RPM и обновления, которые позволяют добавлять зависимости приложений и перестраивать образы контейнеров UBI;
Позволяют добавлять RPM в UBI.
Универсальные базовые образы: стандартные образы#
Стандартные образы (называемые ubi) предназначены для любого приложения, работающего на SberLinux OS. Их ключевые функции включают в себя:
init system:- инициализация системы, необходимая для управления службами systemd. Позволяет устанавливать пакеты RPM, предварительно настроенные для автоматического запуска служб, таких как веб-сервер (httpd);dnf- доступ к репозиториям для добавления и обновления ПО. Можно использовать стандартный набор команд:dnf,dnf-config-manager,dnfdownloaderи так далее;utilities- утилиты, включаяtar,dmidecode,gzip,getfacl, командыacl,dmsetupи так далее.
Универсальные базовые образы: init-образы#
Init-образы UBI (ubi-init) содержат систему инициализации systemd, что делает их полезными для создания образов, в которых можно запускать службы systemd, такие как веб-сервер или файловый сервер.
Примечание
Поскольку образ ubi9-init создается поверх образа ubi9, их содержимое в основном совпадает. Однако есть несколько важных отличий:
ubi9-init:
Устанавливает CMD в
/sbin/initдля запуска init-службы systemd по умолчанию;Содержит связанные с процессом команды
ps(пакетprocps-ng);Устанавливает
SIGRTMIN+3в качествеStopSignal. Systemd вubi9-initигнорирует обычные сигналы для выхода (SIGTERMиSIGKILL), но завершит работу, если получит сигналSIGRTMIN+3.
ubi9:
Устанавливает CMD в /bin/bash;
Не содержит команды, связанные с
psи процессом (пакетprocps-ng);Не игнорирует обычные сигналы для выхода (
SIGTERMиSIGKILL).
Универсальные базовые образы: микро-образы#
Ubi-micro - это наименьший образ UBI, полученный исключением менеджера пакетов и всех его зависимостей, которые включаются в образ контейнера. Это сводит к минимуму поверхность атаки образов контейнеров, основанных на образе ubi-micro, и подходит для минимальных приложений, даже если используются Standard, Minimal или Init для других приложений. Образ контейнера без упаковки дистрибутива Linux называется Distroless-образ.