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

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

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

  • базовые образы ОС SberLinux OS Server;

  • универсальные базовые образы (UBI).

Оба типа создаются на основе ОС SberLinux OS Server.

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

Общие характеристики образов контейнеров#

Следующие характеристики применимы к базовым образам ОС SberLinux OS Server и к образам UBI.

Образы контейнеров делятся на:

  • Supported - поддерживают использование с контейнеризированными приложениями. Содержат защищенные и протестированные пакеты ПО;

  • Cataloged - содержат описания, технические детали и индекс работоспособности для каждого образа. Указываются в каталоге ОС SberLinux OS Server; –>

  • Updated - предлагают определенный график обновлений для получения последней версии ПО;

  • Tracked - отображают изменения каждого обновления. Отслеживаются по исправлениям продукта ОС SberLinux OS Server;

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

Характеристики образов UBI#

UBI-образы делятся на: micro, minimal, standard и init. Для создания приложений доступны готовые образы, включающие среду выполнения программных языков и репозитории DNF.

К образам UBI применимы следующие характеристики:

  • создаются на основе подмножества содержимого ОС SberLinux OS Server;

  • распространяются, обеспечивая стандартизацию для клиентов, интернет-провайдеров и других. С помощью образов UBI доступно создание образов контейнеров на основе ПО, которым можно свободно делиться и развертывать;

  • существуют в четырех вариантах;

  • содержат набор готовых образов контейнеров среды выполнения языка программирования - служат основой для приложений, если базируются на Application Streams. Приложения могут использовать стандартные, поддерживаемые среды выполнения, такие как python, perl, php, dotnet, nodejs и ruby;

  • предоставляют набор связанных репозиториев DNF, включающие пакеты RPM и обновления, которые позволяют добавлять зависимости приложений и перестраивать образы контейнеров UBI;

  • позволяют добавлять RPM в UBI.

Универсальные базовые образы: стандартные образы#

Стандартные образы (называемые ubi) предназначены для любого приложения, работающего на ОС SberLinux OS Server. Их ключевые функции включают в себя:

  • 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 (ubi-minimal) содержат предустановочный набор и менеджер пакетов (microdnf), что позволяет использовать контейнер, минимизируя зависимости, включенные в образ.

Ключевыми особенностями минимальных образов являются:

  • малый размер - размер минимальных образов составляет около 92 МБ на диске и 32 МБ при сжатии. Это менее половины размера стандартных образов;

  • цстановка ПО (microdnf) - утилита microdnf заменяет функции dnf для работы с репозиториями ПО и программными пакетами RPM. Microdnf - это уменьшенная версия dnf, позволяющая включать и отключать репозитории, удалять и обновлять пакеты, а также очищать кеш после установки пакетов;

  • пакетная база - отсутствие нескольких функций из обычных RPM-пакетов ОС SberLinux OS Server. Минимальные образы не включают систему инициализации и управления службами, такую как systemd или System V init, среду выполнения Python и некоторые утилиты оболочки;

  • поддержка модулей для microdnf - модули, используемые с командой microdnf, позволяют устанавливать несколько версий одного и того же ПО при наличии.

Модули microdnf#

Модуль

Описание

module enable

Включить поток модулей

module disable

Отключить поток модулей

module reset

Сбросить поток модулей

  • Например, чтобы включить поток модуля nodejs:14 внутри минимального контейнера UBI, введите:

microdnf module enable nodejs:14

Пример вывода программы:

Downloading metadata...
...
Enabling module streams:
    nodejs:14

Running transaction test...
 ~~~
<!-- //fstec: // -->
## Универсальные базовые образы: микро-образы

`Ubi-micro` - это наименьший образ UBI, полученный исключением менеджера пакетов и всех его зависимостей, которые включаются в образ контейнера. Это сводит к минимуму поверхность атаки образов контейнеров, основанных на образе `ubi-micro`, и подходит для минимальных приложений, даже если используются `Standard`, `Minimal` или `Init` для других приложений. Образ контейнера без упаковки дистрибутива Linux называется Distroless-образ.
<!-- end_include_gen -->