Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
      • Создать ВМ с Container Optimized Image
      • Создать ВМ с Container Optimized Image и дополнительным томом для Docker-контейнера
      • Создать ВМ с Container Optimized Image и несколькими Docker-контейнерами
      • Создать группу ВМ с Container Optimized Image
      • Создать группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
      • Изменить ВМ с Container Optimized Image
      • Создать ВМ и группу ВМ с Container Optimized Image с помощью Terraform
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Перед началом работы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
  • Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
  1. Практические руководства
  2. Container Optimized Image
  3. Создать группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

Создание группы виртуальных машин с Container Optimized Image и несколькими Docker-контейнерами

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 28 апреля 2025 г.
  • Перед началом работы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
  • Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

Вы можете создать группу виртуальных машин на базе образа Container Optimized Image с несколькими Docker-контейнерами внутри.

Для создания Docker-контейнеров будет использоваться Docker Compose спецификация.

Внимание

Создавая группы ВМ, учитывайте лимиты. Чтобы не нарушить работу компонента Instance Groups, не изменяйте и не удаляйте вручную созданные им ресурсы: целевую группу Network Load Balancer, ВМ и диски. Вместо этого измените или удалите группу полностью.

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

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Подготовьте окружениеПодготовьте окружение

  1. Создайте сервисный аккаунт с именем group-coi и назначьте ему роль editor:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать сервисный аккаунт.
    2. В списке сервисов выберите Identity and Access Management.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя group-coi.
    5. Чтобы назначить сервисному аккаунту роль на текущий каталог, нажмите Добавить роль и выберите роль editor.
    6. Нажмите кнопку Создать.
    1. Создайте сервисный аккаунт:

      yc iam service-account create --name group-coi
      

      Результат:

      id: ajeabccde01d********
      folder_id: b0g12ga82bcv********
      created_at: "2023-03-13T14:32:18.900092Z"
      name: group-coi
      
    2. Назначьте роль сервисному аккаунту:

      yc resource-manager folder add-access-binding b0g12ga82bcv******** \
        --role editor \
        --subject serviceAccount:ajeabccde01d********
      

    Воспользуйтесь методом Create для ресурса ServiceAccount.

  2. Создайте сеть с именем yc-auto-network и подсеть в одной зоне доступности:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать сеть.
    2. Выберите сервис Virtual Private Cloud.
    3. Нажмите кнопку Создать сеть.
    4. Задайте имя сети yc-auto-network.
    5. Выберите дополнительную опцию Создать подсети.
    6. Нажмите кнопку Создать сеть.
    1. Создайте сеть:

      yc vpc network create --name yc-auto-network
      

      Результат:

      id: enpabce123hd********
      folder_id: b0g12ga82bcv********
      created_at: "2023-03-13T14:57:15Z"
      name: yc-auto-network
      
    2. Создайте подсеть в зоне доступности ru-central1-a:

      yc vpc subnet create --network-id enpabce123hd******** --range 192.168.1.0/24 --zone ru-central1-a
      

      Результат:

      id: e1lnabc23r1c********
      folder_id: b0g12ga82bcv********
      created_at: "2023-03-13T16:23:12Z"
      network_id: enpabce123hd********
      zone_id: ru-central1-a
      v4_cidr_blocks:
      - 192.168.1.0/24
      
    1. Создайте сеть с помощью метода Create для ресурса Networks.
    2. Создать подсеть в зоне доступности ru-central1-a с помощью метода Create для ресурса Subnets.

Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерамиСоздайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

  1. Узнайте идентификатор последней версии публичного образа Container Optimized Image.

    Образ Container Optimized Image в реестре Container Registry может обновляться и меняться в соответствии с релизами. При этом образ на виртуальной машине не обновится автоматически до последней версии. Чтобы создать группу ВМ с последней версией Container Optimized Image, необходимо самостоятельно проверить ее наличие:

    CLI
    Yandex Cloud Marketplace
    yc compute image get-latest-from-family container-optimized-image --folder-id standard-images
    

    Результат:

    id: <идентификатор_последней_версии_COI>
    folder_id: standard-images
    ...
    
    1. Перейдите на страницу Cloud Marketplace и выберите образ с нужной конфигурацией:
      • Container Optimized Image.
      • Container Optimized Image GPU.
    2. В блоке Идентификаторы продукта скопируйте значение image_id.
  2. Сохраните спецификацию группы ВМ с Container Optimized Image и несколькими Docker-контейнерами в файл specification.yaml:

    name: group-coi-containers # Имя группы ВМ, уникальным в рамках каталога.
    service_account_id: ajeabccde01d******** # Идентификатор сервисного аккаунта.
    instance_template:
      service_account_id: ajeabccde01d******** # Идентификатор сервисного аккаунта для доступа к приватным Docker-образам.
      platform_id: standard-v3 # Идентификатор платформы.
      resources_spec:
        memory: 2G # Количество памяти (RAM).
        cores: 2 # Количество ядер процессора (vCPU).
      boot_disk_spec:
        mode: READ_WRITE # Режим доступа к диску: чтение и запись.
        disk_spec:
          image_id: <идентификатор_последней_версии_COI>
          type_id: network-hdd # Тип диска.
          size: 32G # Размер диска. Должен быть не менее 30 ГБ.
      network_interface_specs:
       - network_id: enpabce123hd******** # Идентификатор сети.
         subnet_ids:
           - e1lnabc23r1c******** # Идентификатор подсети.
         primary_v4_address_spec: {
           one_to_one_nat_spec: {
             ip_version: IPV4 # Спецификация версии интернет-протокола IPv4 для публичного доступа к ВМ.
           }
         }
      metadata: # Значения, которые будут переданы в метаданные ВМ.
       docker-compose: |- # Ключ в метаданных ВМ, при котором используется Docker Compose спецификация.
         version: '3.7'
         services:
           app1:
             container_name: nginx
             image: "nginx"
             ports:
               - "80:80"
             restart: always
           app2:
             container_name: redis
             image: "redis"
             restart: always
       ssh-keys: | # Параметр для передачи SSH-ключа на ВМ.
         yc-user:ssh-ed25519 ABC...d01 user@desktop.ru # Имя пользователя для подключения к ВМ.
    deploy_policy: # Политика развертывания ВМ в группе.
      max_unavailable: 1
      max_expansion: 0
    scale_policy: # Политика масштабирования ВМ в группе.
      fixed_scale:
        size: 2
    allocation_policy: # Политика распределения ВМ по зонам доступности.
      zones:
        - zone_id: ru-central1-a
    

    Примечание

    Передать SSH-ключ в метаданных ВМ можно с помощью параметра ssh-keys или в ключе с пользовательскими метаданными user-data. В этом практическом руководстве используется первый вариант.

  3. Создайте группу ВМ с именем group-coi-containers с помощью спецификации specification.yaml:

    CLI
    API

    Выполните команду:

    yc compute instance-group create --file=specification.yaml
    

    Результат:

    done (48s)
    id: cl0q12abcd4e********
    folder_id: b0g12ga82bcv********
    ...
      target_size: "2"
    service_account_id: ajeabccde01d********
    status: ACTIVE
    

    Воспользуйтесь методом CreateFromYaml для ресурса InstanceGroup.

  4. Убедитесь, что группа ВМ с Container Optimized Image и несколькими Docker-контейнерами создана:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы создали группу ВМ.
    2. Выберите сервис Compute Cloud.
    3. Перейдите в раздел Группы виртуальных машин.
    4. Нажмите на имя группы ВМ group-coi-containers.
    yc compute instance-group list-instances group-coi-containers
    

    Результат:

    +----------------------+---------------------------+----------------------------------+-------------+------------------------+----------------+
    |     INSTANCE ID      |           NAME            |            EXTERNAL IP           | INTERNAL IP |         STATUS         | STATUS MESSAGE |
    +----------------------+---------------------------+----------------------------------+-------------+------------------------+----------------+
    | fhmabcv0de12******** | cl0q12abcs4g********-fmar | 84.201.155.117                   | 10.130.0.14 | RUNNING_ACTUAL [2h35m] |                |
    | fhmab0cdqj12******** | cl0q12abcs4g********-fqeg | 84.252.131.221                   | 10.130.0.47 | RUNNING_ACTUAL [2h35m] |                |
    +----------------------+---------------------------+----------------------------------+-------------+------------------------+----------------+
    

    Посмотрите список созданных ВМ с помощью метода List для ресурса InstanceGroup.

Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерамиПроверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

  1. Подключитесь к одной из созданных ВМ по SSH:

    CLI
    ssh yc-user@84.201.155.117
    

    Результат:

    Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-54-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    Last login: Mon Mar 13 15:23:28 2023 from 123.456.789.101
    
  2. Посмотрите список запущенных на ВМ Docker-контейнеров:

    CLI
    sudo docker ps -a
    

    Результат:

    CONTAINER ID  IMAGE  COMMAND                 CREATED             STATUS             PORTS               NAMES
    c0a125a1765a  redis  "docker-entrypoint.s…"  About a minute ago  Up About a minute  6379/tcp            redis
    01288d7e382f  nginx  "/docker-entrypoint.…"  About a minute ago  Up About a minute  0.0.0.0:80->80/tcp  nginx
    

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

Предыдущая
Создать группу ВМ с Container Optimized Image
Следующая
Изменить ВМ с Container Optimized Image
Проект Яндекса
© 2025 ООО «Яндекс.Облако»