Образы корневой файловой системы

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

В зависимости от настройки кластера (опция 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.