Типы образов контейнеров#

Образ контейнера представляет собой бинарный файл, включающий все требования для запуска одного контейнера, и метаданные, описывающие его потребности и возможности.

Существует два типа образов контейнеров:

  • Базовые образы 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-образ.