Типы образов контейнеров#
Образ контейнера представляет собой бинарный файл, включающий все требования для запуска одного контейнера, и метаданные, описывающие его потребности и возможности.
Существует два типа образов контейнеров:
базовые образы ОС 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, позволяют устанавливать несколько версий одного и того же ПО при наличии.
Модуль |
Описание |
|---|---|
|
Включить поток модулей |
|
Отключить поток модулей |
|
Сбросить поток модулей |
Например, чтобы включить поток модуля
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 -->