Собрать кастомный Docker-образ для Deployments

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

Шаг 1. Подготовьте Dockerfile

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

Для отправки запроса в инференс, развернутый с использованием кастомного образа, вместо метода predict должен быть реализован метод, обрабатывающий запросы.

В общем случае этот документ выглядит так:

FROM {PROD_REGISTRY}/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1:latest     # the base image from which the custom image will be built
apt-get install mypackage   # packages required for installation

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

FROM cr.ai.cloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1
    USER root
apt-get install mypackage
USER user

Шаг 2. Соберите кастомный образ

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

При работе на MacOS с процессорами Apple (M1, M2, M3 и пр.) необходимо к команде docker build добавить флаг --platform linux/amd64.

Примечание

Приложение должно принимать пакеты по порту 8080.

Пример сборки кастомного образа для деплоя

Docker registry используется для хранения Docker-образов. Создание кастомного Docker-образа для Deployments позволяет развернуть требуемый образ (не используя базовый) в качестве деплоя.

Например, нужен веб-сервер в контейнере, который будет принимать пакеты по порту 8080.

Файлы для скачивания

Шаг 3. Пройдите аутентификацию в Docker registry

  1. Сгенерируйте ключ для Docker CLI:

    1. В левом меню платформы перейдите ML Space → Воркспейсы.

    2. Возле воркспейса, для которого нужно сгенерировать ключ, нажмите Кнопка с тремя вертикальными точками и выберите Параметры разработчика.

    3. Возле Docker CLI Key нажмите Сгенерировать ключ.

    4. После генерации скопируйте ключ.

  2. Аутентифицируйтесь в Docker registry любым из предпочитаемых способов.

    С помощью интерфейса ML Space можно аутентифицироваться в Docker CLI, используя команду:

    docker login cr.ai.cloud.ru --username example@example.com --password examplepsswd
    

    Где параметр example@example.com — это email пользователя, а examplepsswd — ключ, однократно передаваемый пользователю при нажатии на Сгенерировать ключ для Docker CLI.

Шаг 4. Загрузите образ в Docker registry

Команду для использования тега можно просмотреть, нажав Push command в Docker registry.

Присвойте образу название с префиксом «deploy-», тег и загрузите его в Docker registry, например:

cr.ai.cloud.ru/xxxxxxxxxx-xxxxxxx-xxxxx/deploy-test[:test_tag]

Эта команда позволяет загрузить образ deploy-test с тегом test_tag в Docker registry требуемого воркспейса.

Шаг 5. Создайте деплой из кастомного образа

  1. Создайте деплой из Docker-образа загруженного на предыдущем шаге и запустите его (подробнее см. Развернуть модель (создать деплой)).

  2. Проверьте корректность функционирования созданного деплоя, создав в разделе Тест API пустой запрос:

    {}
    

    В ответ должно прийти сообщение:

    {
     "message": "Success request to path=/v1/models/{DEPLOY-NAME}:predict"
    }
    

Результат

  • Dockerfile, в котором описана сборка веб-сервера, принимающего запросы на порт 8080.

  • Репозиторий в Docker registry с префиксом «deploy-», в который загружен образ, собранный из Dockerfile.

  • Деплой, запущенный на основе собранного образа.

Масштабная конференция
GoCloud 2024:
облачные грани будущего