Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex DataSphere
  • Начало работы
    • Все руководства
      • Развертывание сервиса на основе Docker-образа
      • Развертывание сервиса на основе Docker-образа с FastAPI
      • Развертывание сервиса на основе модели ONNX
      • Развертывание gRPC-сервиса на основе Docker-образа
      • Генерация изображения с помощью модели Stable Diffusion
  • Справочник Terraform
  • Аудитные логи Audit Trails
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • История изменений

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте каталог
  • Создайте реестр Container Registry
  • Создайте сервисный аккаунт для проекта DataSphere
  • Создайте авторизованный ключ для сервисного аккаунта
  • Подготовьте Docker-образ для развертывания сервиса
  • Создайте Docker-образ сервиса
  • Загрузите Docker-образ в Container Registry
  • Разверните сервис в DataSphere
  • Проверьте работу развернутого сервиса
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Эксплуатация
  3. Развертывание сервиса на основе Docker-образа

Развертывание сервиса на основе Docker-образа

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
    • Создайте каталог
    • Создайте реестр Container Registry
    • Создайте сервисный аккаунт для проекта DataSphere
    • Создайте авторизованный ключ для сервисного аккаунта
  • Подготовьте Docker-образ для развертывания сервиса
    • Создайте Docker-образ сервиса
    • Загрузите Docker-образ в Container Registry
  • Разверните сервис в DataSphere
  • Проверьте работу развернутого сервиса
  • Удалите созданные ресурсы

DataSphere позволяет разворачивать и эксплуатировать сервисы на основе произвольного Docker-образа.

В этом практическом руководстве с помощью ноды из Docker-образа вы развернете сервис обнаружения объектов на изображении, основанный на NVIDIA Triton Inference Server.

  1. Подготовьте инфраструктуру.
  2. Подготовьте Docker-образ для развертывания сервиса.
  3. Разверните сервис в DataSphere.
  4. Проверьте работу развернутого сервиса.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:

  1. На главной странице DataSphere нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO).
  2. Выберите организацию Yandex Identity Hub, в которой вы будете работать в Yandex Cloud.
  3. Создайте сообщество.
  4. Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость развертывания сервиса на основе Docker-образа входят:

  • плата за постоянно запущенные инстансы ноды (см. тарифы DataSphere);
  • плата за запуск ячеек с кодом для проверки работы развернутого сервиса;
  • объем хранилища, занятый данными Yandex Container Registry (см. тарифы Container Registry).

Подготовьте инфраструктуруПодготовьте инфраструктуру

Войдите в консоль управления Yandex Cloud и выберите организацию, в которой вы работаете с DataSphere. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт.

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

Примечание

Если вы работаете с Yandex Cloud через федерацию удостоверений, вам может быть недоступна платежная информация. В этом случае обратитесь к администратору вашей организации в Yandex Cloud.

Создайте каталогСоздайте каталог

Создайте каталог, в котором вы развернете всю необходимую инфраструктуру, а ваш сервис будет хранить логи.

Примечание

В примере инфраструктура Yandex Cloud и развернутый сервис работают в одном каталоге Yandex Cloud, однако это не обязательно.

Консоль управления
  1. В консоли управления выберите облако и нажмите кнопку Создать каталог.
  2. Введите имя каталога, например data-folder.
  3. Нажмите кнопку Создать.

Создайте реестр Container RegistryСоздайте реестр Container Registry

DataSphere может создать ноду из Docker-образа, который хранится в Yandex Container Registry. Чтобы загрузить образ, создайте реестр:

Консоль управления
  1. Перейдите в каталог data-folder.
  2. В списке сервисов выберите Container Registry.
  3. Нажмите кнопку Создать реестр.
  4. Задайте имя реестра, например datasphere-registry, и нажмите кнопку Создать реестр.

Создайте сервисный аккаунт для проекта DataSphereСоздайте сервисный аккаунт для проекта DataSphere

Консоль управления
  1. Перейдите в каталог data-folder.

  2. В списке сервисов выберите Identity and Access Management.

  3. Нажмите кнопку Создать сервисный аккаунт.

  4. Введите имя сервисного аккаунта, например sa-for-datasphere.

  5. Нажмите Добавить роль и назначьте сервисному аккаунту роли:

    • container-registry.images.puller — чтобы разрешить DataSphere скачивать ваш Docker-образ для создания ноды.
    • vpc.user — для работы с сетью DataSphere.
    • (опционально) datasphere.user — чтобы отправлять запросы в ноду.
  6. Нажмите кнопку Создать.

Создайте авторизованный ключ для сервисного аккаунтаСоздайте авторизованный ключ для сервисного аккаунта

Чтобы сервисный аккаунт мог аутентифицироваться в Yandex Container Registry, создайте авторизованный ключ.

Примечание

Срок жизни авторизованных ключей не ограничен, но вы всегда можете получить новые авторизованные ключи и повторить процедуру аутентификации, если что-то пошло не так.

Консоль управления
  1. Перейдите в каталог data-folder.

  2. В списке сервисов выберите Identity and Access Management.

  3. На панели слева выберите Сервисные аккаунты.

  4. В открывшемся списке выберите сервисный аккаунт sa-for-datasphere.

  5. Нажмите кнопку Создать новый ключ на верхней панели.

  6. Выберите пункт Создать авторизованный ключ.

  7. Выберите алгоритм шифрования.

  8. Задайте описание ключа, чтобы потом было проще найти его в консоли управления.

  9. Сохраните открытый и закрытый ключи: закрытый ключ не сохраняется в Yandex Cloud, открытый ключ нельзя будет посмотреть в консоли управления.

    Совет

    Вы можете сохранить файл с ключом на свой компьютер. Его содержимое понадобится позднее при создании секрета для доступа DataSphere в Container Registry.

Подготовьте Docker-образ для развертывания сервисаПодготовьте Docker-образ для развертывания сервиса

Если у вас еще нет Docker, установите его.

Создайте Docker-образ сервисаСоздайте Docker-образ сервиса

  1. Создайте папку, в которой будет храниться конфигурация Docker-образа, например /home/docker-images.

  2. Создайте и сохраните текстовый файл без расширения с именем Dockerfile.

    Triton Dockerfile
    # syntax=docker/dockerfile:1
    FROM nvcr.io/nvidia/tritonserver:22.01-py3
    
    RUN mkdir -p /models/resnet152_640x640/1/model.savedmodel/ &&\
      curl --location "https://tfhub.dev/tensorflow/faster_rcnn/resnet152_v1_640x640/1?tf-hub-format=compressed" |\
      tar -zxvC /models/resnet152_640x640/1/model.savedmodel/ &&\
      mkdir -p /models/inception_resnet_v2_640x640/1/model.savedmodel/ &&\
      curl --location "https://tfhub.dev/tensorflow/faster_rcnn/inception_resnet_v2_640x640/1?tf-hub-format=compressed" |\
      tar -zxvC /models/inception_resnet_v2_640x640/1/model.savedmodel/
    
    ENTRYPOINT ["/opt/tritonserver/nvidia_entrypoint.sh",\
                "tritonserver",\
                "--model-repository=/models",\
                "--strict-model-config=false"]
    
  3. Запустите Docker Desktop.

  4. В командной оболочке перейдите в папку, где хранится созданный вами Dockerfile.

    cd docker-images
    
  5. Соберите Docker-образ:

    docker build -t triton-docker --platform linux/amd64 .
    

Загрузите Docker-образ в Container RegistryЗагрузите Docker-образ в Container Registry

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

CLI
  1. Задайте каталог data-folder каталогом по умолчанию:

    yc config set folder-name data-folder
    
  2. Аутентифицируйтесь в Container Registry.

    1. Получите IAM-токен для своего пользовательского аккаунта:
    yc iam create-token
    

    В ответе будет IAM-токен. Если вы аутентифицируетесь от имени федеративного аккаунта, CLI перенаправит вас в консоль управления для аутентификации, а после этого пришлет IAM-токен.

    Примечание

    У IAM-токена короткое время жизни — не более 12 часов. Поэтому такой способ подойдет для приложений, которые будут запрашивать IAM-токен автоматически.

    1. Выполните команду, подставив вместо <IAM-токен> значение токена, которое вы получили на предыдущем шаге:
    docker login \
      --username iam \
      --password <IAM-токен> \
      cr.yandex
    
  3. Получите список реестров каталога data-folder:

    yc container registry list 
    
    

    Идентификатор реестра понадобится вам на следующем шаге. Пример вывода команды:

    +----------------------+---------------------+----------------------+
    |          ID          |        NAME         |      FOLDER ID       |
    +----------------------+---------------------+----------------------+
    | crp86bmgl1da******** | datasphere-registry | b1g4bh24c406******** |
    +----------------------+---------------------+----------------------+
    
  4. Загрузите Docker-образ в Container Registry. Вместо <идентификатор_реестра> подставьте идентификатор вашего реестра datasphere-registry:

    docker tag triton-docker cr.yandex/<идентификатор_реестра>/triton:v1
    docker push cr.yandex/<идентификатор_реестра>/triton:v1
    

Разверните сервис в DataSphereРазверните сервис в DataSphere

  1. Откройте главную страницу DataSphere. На панели слева выберите Сообщества.

  2. Выберите сообщество с привязанным платежным аккаунтом.
  3. Создайте проект Node from Docker.
  4. В настройках проекта укажите:
    • Каталог по умолчанию — data-folder.
    • Сервисный аккаунт — sa-for-datasphere.
  5. Создайте секрет iam-secret, содержащий IAM-токен вашего пользовательского аккаунта.
  6. Создайте секрет key-for-sa, хранящий полное содержимое файла с авторизованным ключом для сервисного аккаунта sa-for-datasphere.
  7. Создайте ноду. Для этого на странице проекта в правом верхнем углу нажмите кнопку Создать ресурс. Во всплывающем окне выберите Нода. Укажите настройки ноды:
    1. В поле Имя введите имя ноды — triton.
    2. В блоке Тип:
      • Тип — выберите Docker-образ.
      • Хранилище Docker-образов — выберите Yandex Container Registry.
      • Путь к образу — задайте путь к образу Container Registry вида cr.yandex/<идентификатор_реестра>/<имя_образа>:<тег>. Его можно получить в консоли управления, скопировав полное значение на странице репозитория. Также вы можете заполнить поле вручную. Идентификатор реестра можно получить в CLI, выполнив команду yc container registry list.
      • Секрет с паролем — выберите key-for-sa.
    3. В блоке Эндпоинт:
      • Тип — выберите протокол HTTP.
      • Порт — 8000.
    4. Включите опцию Телеметрия и укажите:
      • Тип — выберите Prometheus.
      • HTTP-адрес — /metrics.
      • Порт — 8000.
    5. Включите опцию Проверка и укажите:
      • Тип — выберите HTTP.
      • Путь — /v2/health/ready.
      • Порт — 8000.
      • Таймаут — 1.
      • Интервал — 20.
      • Неудачные проверки — 3.
      • Пройденные проверки — 3.
    6. В блоке Каталог выберите каталог data-folder.
    7. В блоке Обеспечение выберите конфигурацию g1.1.
    8. Нажмите кнопку Создать.

Проверьте работу развернутого сервисаПроверьте работу развернутого сервиса

  1. Скачайте ноутбук с кодом проверки и загрузите его в JupyterLab проекта Node from Docker.
  2. Выполните ячейки блока Preparing environment: выберите ячейки и нажмите Shift + Enter.
  3. В блоке Authentication заполните информацию для аутентификации в ноде. Замените <node ID> и <folder ID> на идентификаторы ноды triton и каталога data-folder.
  4. Выполните ячейки блока Authentication.
  5. Выполните ячейки блока Test requests. Вы будете обращаться к разным моделям, в ответ на каждый запрос сервис вернет распознанные объекты на изображении.

Удалите созданные ресурсыУдалите созданные ресурсы

При развертывании и эксплуатации моделей вы платите за время работы каждого инстанса ноды — от момента запуска до момента удаления.

Если развернутый сервис вам больше не нужен, удалите ноду.

  1. Удалите ноду.
  2. Удалите секреты.
  3. Удалите авторизованный ключ сервисного аккаунта.
  4. Удалите Docker-образ и реестр Container Registry.

Была ли статья полезна?

Предыдущая
Создание сервера MLFlow для логирования экспериментов и артефактов
Следующая
Развертывание сервиса на основе Docker-образа с FastAPI
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»