Образы корневой файловой системы
Образ корневой файловой системы содержит самодостаточный дистрибутив операционной системы, приложения и библиотеки для запуска пользовательской команды в изолированном контейнере.
В зависимости от настройки кластера (опция exec_node/slot_manager/job_environment/type
в файле конфигурации exec-нод) среда исполнения поддерживает различные форматы и источники образов:
- simple — не поддерживает изоляцию;
- cri — Docker Image;
- porto — Porto Layers, Docker Image из Internal Docker Registry.
Docker образы
Терминология
- Docker Layer — фрагмент данных образа корневой файловой системы;
- Docker Image — образ корневой файловой системы, состоящий из метаданных и упорядоченного множества слоёв;
- Docker Registry — сервер, хранящий и распространяющий данные и метаданные Docker образов;
- Internal Docker Registry — docker registry, хранящий образы непосредственно в Кипарисе.
Docker образ адресуется по имени в формате [REGISTRY/]IMAGE[:TAG|@DIGEST]
, где REGISTRY
это FQDN[:PORT]
сервера Docker Registry. Registry FQDN
должен иметь хотя бы одну "." или PORT
. TAG
по умолчанию latest. Подробнее
Docker образ без указания REGISTRY
считается образом из Internal Docker Registry, где IMAGE
соответствует пути //IMAGE
в Кипарисе до директории с метаданными образа.
Internal Docker Registry доступен по стандартному протоколу docker registry для загрузки образов пользователями используя инструменты docker или совместимые с ними. Но не поддерживает адресацию docker image с указанием DIGEST
.
Для использования docker образов из Docker Hub нужно указать их полное имя в формате docker.io/[library/]IMAGE[:TAG|@DIGEST]
.
Запуск с использованием docker образов из внешних docker registry требует наличия сетевого доступа до него от exec-нод кластера. Доступ к internal docker registry происходит внутри кластера.
Каждая exec-нода при запуске джоба скачивает образ себе в локальный кэш, следовательно крупный кластер может генерировать существенную нагрузку на docker registry.
Авторизация
Секрет для доступа к приватному docker registry указывается с помощью ключа docker_auth
опции secure_vault
:
secure_vault = { docker_auth = { username = "..."; password = "..."; auth = "..."; }; }
.
Porto слои
В данном разделе собрана информация о Porto слоях.
Терминология
- Porto слой — фрагмент образа корневой файловой системы для Porto;
- Образ RootFS — образ корневой файловой системы;
- Базовый слой (базовый образ) — самодостаточный образ, в котором лежит основная часть окружения (/bin/bash, libc6, etc); фактически выбирая базовый слой, вы фиксируете версию Ubuntu (Precise, Trusty, Xenial, Bionic и т.д.), в которой будет работать ваш код;
- Дельта слой — слой, который является дополнением к базовому образу и обычно содержит дополнительные библиотеки или бинарные артефакты.
Использование образов файловой системы для запуска операций в YTsaurus
MapReduce операцию необходимо запускать указывая образ файловой системы, если для ее выполнения требуются библиотеки или ресурсы, которых нет на кластерах YTsaurus, и нет возможности подготовить бинарный файл с данной операцией.
Docker образ указывается в спецификации в параметре docker_image = "[REGISTRY/]IMAGE:TAG"
.
Чтобы воспользоваться Porto слоями, необходимо в спецификации операции в секции маппера или редьюсера указать layer_paths = ["//path/to/upper_layer"; ... ; "//path/to/lower_layer"]
. Слои перечисляются от верхнего к нижнему.
Internal Docker Registry пока не доступен в Open-source.