---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/data-processing/layers/layer-paths.md
  - https://ytsaurus.tech/docs/ru/user-guide/data-processing/layers/layer-paths.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/data-processing/layers/layer-paths.md -->
# Образы корневой файловой системы

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

В зависимости от настройки кластера (опция `exec_node/slot_manager/job_environment/type` в файле конфигурации exec-нод) среда исполнения поддерживает различные форматы и источники образов:
- **simple** — не поддерживает изоляцию;
- **cri** — Docker Image;
- **porto** — Porto Layers, Docker Image из Internal Docker Registry.

## Docker образы { #docker_images }

### Терминология

- **Docker Layer** — фрагмент данных образа корневой файловой системы;
- **Docker Image** — образ корневой файловой системы, состоящий из метаданных и упорядоченного множества слоёв;
- **Docker Registry** — сервер, хранящий и распространяющий данные и метаданные Docker образов;
- **Internal Docker Registry** — docker registry, хранящий образы непосредственно в [Кипарисе](https://ytsaurus.tech/docs/ru/user-guide/storage/cypress.md).

Docker образ адресуется по имени в формате `[REGISTRY/]IMAGE[:TAG|@DIGEST]`, где `REGISTRY` это `FQDN[:PORT]` сервера Docker Registry. Registry `FQDN` должен иметь хотя бы одну "." или `PORT`. `TAG` по умолчанию **latest**. [Подробнее](https://docs.docker.com/engine/reference/commandline/pull/)

Docker образ без указания `REGISTRY` считается образом из **Internal Docker Registry**, где `IMAGE` соответствует пути `//IMAGE` в Кипарисе до директории с метаданными образа.

Internal Docker Registry доступен по стандартному протоколу docker registry для загрузки образов пользователями используя инструменты docker или совместимые с ними. Но не поддерживает адресацию docker image с указанием `DIGEST`.

Для использования docker образов из [Docker Hub](https://hub.docker.com) нужно указать их полное имя в формате `docker.io/[library/]IMAGE[:TAG|@DIGEST]`.

Запуск с использованием docker образов из внешних docker registry требует наличия сетевого доступа до него от exec-нод кластера. Доступ к internal docker registry происходит внутри кластера.

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

### Авторизация { #docker_auth }

Секрет для доступа к приватному docker registry указывается с помощью ключа `docker_auth` опции `secure_vault`:
`secure_vault = { docker_auth = { username = "..."; password = "..."; auth = "..."; }; }`.

## Porto слои { #porto_layers }

В данном разделе собрана информация о Porto слоях.

### Терминология

- **Porto слой** — фрагмент образа корневой файловой системы для [Porto](https://github.com/ten-nancy/porto);
- **[Образ RootFS](http://wiki.rosalab.ru/ru/index.php/Образ_rootfs)** — образ корневой файловой системы;
- **Базовый слой** (**базовый образ**) — самодостаточный образ, в котором лежит основная часть окружения (/bin/bash, libc6, etc); фактически выбирая базовый слой, вы фиксируете версию Ubuntu (Precise, Trusty, Xenial, Bionic и т.д.), в которой будет работать ваш код;
- **Дельта слой** — слой, который является дополнением к базовому образу и обычно содержит дополнительные библиотеки или бинарные артефакты.

# Использование образов файловой системы для запуска операций в YTsaurus { #job_rootfs }

MapReduce операцию необходимо запускать указывая образ файловой системы, если для ее выполнения требуются библиотеки или ресурсы, которых нет на кластерах YTsaurus, и нет возможности подготовить бинарный файл с данной операцией.

Docker образ указывается в спецификации в параметре `docker_image = "[REGISTRY/]IMAGE:TAG"`.

Чтобы воспользоваться Porto слоями, необходимо в спецификации операции в секции маппера или редьюсера указать `layer_paths = ["//path/to/upper_layer"; ... ; "//path/to/lower_layer"]`. Слои перечисляются от верхнего к нижнему.
<!-- endsource: ru/_includes/user-guide/data-processing/layers/layer-paths.md -->

Internal Docker Registry пока не доступен в Open-source.
