Кастомные Docker-образы

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

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

  1. Подготовить Dockerfile на локальной машине.

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

  3. Собрать образ и запушить его в Docker registry.

Dockerfile

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

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

Важно

В базовые образы предустановлены основные библиотеки для машинного обучения (tensorflow, pytorch и т.д.). Мы не рекомендуем менять версии предустановленных базовых пакетов.

Базовые образы:

  • cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.0-tf1.15.0-gpu-mlspace:latest

  • cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.0-tf1.15.0-mlspace:latest

  • cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.1-tf2.2.0-gpu-mlspace:latest

  • cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.0-tf2.2.0-mlspace:latest

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

Пример 1.

FROM cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.1-tf2.2.0-mlspace:latest
USER root
RUN apt-get install mypackage
USER jovyan

Пример 2.

FROM cr.msk.sbercloud.ru/aicloud-jupyter/jupyter-cuda10.0-tf1.15.0-mlspace:latest
LABEL maintainer="user_email_address"

USER root

ENV PATH=$PATH:/usr/games/

RUN apt update -y && apt install -y \
    lolcat fortune cowsay

USER jovyan

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

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

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

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

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

Кастомные образы Jupyter-серверов необходимо размещать в репозиториях, в наименовании которых есть префикс jupyter-.

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

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