Сборка кастомного образа на основании базового

Docker registry используется для хранения кастомных Docker-образов. Кастомный образ собирается на основе любого базового образа с использованием необходимых пользователю зависимостей.

Для создания кастомного образа:

  1. Подготовьте Dockerfile на локальной машине (подробнее см. Подготовка Dockerfile).

  2. Подготовьте репозиторий для размещения образа (подробнее см. Подготовка репозитория).

  3. Соберите образ и загрузите его в Docker registry (подробнее см. Сборка кастомного образа и загрузка в Docker registry).

Подготовка Dockerfile

Dockerfile — текстовый документ, который содержит все необходимые команды для сборки образа. В общем случае этот документ выглядит так:

FROM {PROD_REGISTRY}/aicloud-base-images/horovod-cuda10.1-tf2.3.0:latest #базовый образ, на основе которого собирается кастомный
apt-get install mypackage #необходимые пакеты для установки

Список базовых образов, доступных в рамках сервиса, представлен в разделе Библиотеки в базовых образах.

Рассмотрим пример, как создать Dockerfile с использованием базового образа.

FROM cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda10.1-tf2.3.0
    USER root
apt-get install mypackage
USER user

Важно отметить, что:

  • Cодержимое NFS и пользовательские данные будут смонтированы в директорию /home/jovyan. Она же будет установлена в качестве рабочей директории.

  • Модули, расположенные внутри папки соответствующей переменной PYTHON_LIB_PATH, должны быть доступны для импорта интерпретатором Python. По умолчанию это директория: /home/user/conda/lib/python3.7. В нее при запуске контейнера на кластере будет скопирована клиентская библиотека client_lib.py.

  • Рекомендуется не менять точку входа и ее расположение, по умолчанию это /home/user/script.sh. Она отвечает за копирование client_lib, старт Jupyter Server на порту 8888 и т.д.

Важно

Не рекомендуется менять версию базовых пакетов — horovod, tensorflow, apex, mxnet, tensorboard, kfserving.

Подготовка репозитория

Кастомные образы задач обучения необходимо размещать в репозиториях, в наименовании которых есть префикс «deploy-».

Сборка кастомного образа и загрузка в Docker registry

Выполните сборку кастомного образа (docker build), пометьте образ тегом (docker tag) и загрузите образ в реестр (docker push). См. Управление образами.