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

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

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