Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Container Solution
  • Начало работы
  • Сценарии использования
    • Все сценарии
    • Создать ВМ с Container Optimized Image
    • Создать ВМ с Container Optimized Image и дополнительным томом для Docker-контейнера
    • Создать ВМ с Container Optimized Image и несколькими Docker-контейнерами
    • Создать группу ВМ с Container Optimized Image
    • Изменить ВМ с Container Optimized Image
    • Настройка вывода информации из Docker-контейнера в серийный порт
    • Создать ВМ и группу ВМ с Container Optimized Image с помощью Terraform
  • Концепции
    • Образ Container Optimized Image
    • Квоты и лимиты
  • Правила тарификации
  • Вопросы и ответы
  1. Концепции
  2. Образ Container Optimized Image

Образ Container Optimized Image

  • Особенности работы с загрузочным диском
  • Особенности работы с сетью
  • Docker-образ
  • Политики перезапуска Docker-контейнера
  • Спецификации Docker-контейнера
    • COI спецификация
    • Docker Compose спецификация

Container Optimized Image — образ виртуальной машины, оптимизированный для запуска Docker-контейнеров. Образ включает в себя: Ubuntu LTS, Docker и демона для запуска Docker-контейнеров.

Образ интегрирован с платформой Yandex.Cloud, это позволяет:

  • Запускать Docker-контейнер сразу после создания ВМ из консоли управления или YC CLI.
  • Обновлять запущенный Docker-контейнер с минимальным временем простоя.
  • Получать доступ к открытым сетевым портам Docker-контейнера без дополнительных настроек.

Подробнее о работе с Container Optimized Image читайте в разделе Создание ВМ с Container Optimized Image.

Особенности работы с загрузочным диском

  • При создании ВМ с Container Optimized Image нельзя создать загрузочный диск из снимка диска.
  • По умолчанию при создании виртуальной машины из образа, создается диск, размер которого равен размеру образа. Но так как назначение виртуальной машины с Container Optimized Image — это запуск на ней Docker-контейнера, то может возникнуть проблема недостаточного свободного места при развертывании Docker-контейнера. Чтобы этого избежать, явно укажите необходимый размер загрузочного диска с помощью флага --create-boot-disk size=<размер диска в ГБ>.

Особенности работы с сетью

  • В Container Optimized Image Docker-контейнеры запускаются с использованием сетевого интерфейса хоста.
    Все порты, открытые в Docker-контейнере, будут открыты и на хосте.
  • Все порты хоста открыты в интернет, что позволяет автоматически получать доступ к портам запущенного Docker-контейнера.

Docker-образ

При создании ВМ на базе Container Optimized Image есть возможность указать Docker-образ, на основе которого будет запущен Docker-контейнер.
Этот Docker-образ может быть загружен как из публичного реестра Docker-образов, так и из Container Registry. В случае использования Container Registry для доступа к Docker-образу будет использован привязанный к ВМ сервисный аккаунт.

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

  • Docker Hub: ubuntu:16.04.
  • Container Registry: cr.yandex/crpd50616s9a2t7gr8mi/ubuntu:16.04.

Политики перезапуска Docker-контейнера

В описании Docker-контейнера можно указать политики перезапуска:

  • Always — всегда перезапускать Docker-контейнер при его остановке. Если Docker-контейнер остановлен вручную, он будет перезапущен только при перезапуске Docker-демона.
  • Never — не перезапускать Docker-контейнер автоматически.
  • OnFailure — перезапускать Docker-контейнер только если Docker-контейнер завершил работу с ненулевым кодом возврата.

В случае, если описание Docker-контейнера в метаданных изменилось при перезагрузке ВМ, установленная политика перезапуска не учитывается и запускается Docker-контейнер, соответствующий новому описанию.

Спецификации Docker-контейнера

Для описания конфигурации запуска Docker-контейнера существует два способа:

  • COI спецификация, позволяет запустить только один Docker-контейнер.
  • С помощью Docker Compose спецификации можно задать более гибкую конфигурацию, например, запуск нескольких Docker-контейнеров и необходимых служб.

Важно

Одновременно может использоваться только одна из спецификаций: COI или Docker Compose.

COI спецификация

Docker-контейнер в Container Optimized Image описывается в спецификации (YAML-файле), основанной на спецификации подов Kubernetes.

При создании ВМ на базе Container Optimized Image из консоли управления или YC CLI спецификация генерируется автоматически на основе указанных данных. Для создания группы ВМ на базе Container Optimized Image спецификацию необходимо составить вручную. Пример спецификации и необходимые ключи описаны ниже.

Пример COI спецификации Docker-контейнера

COI спецификация представляет из себя YAML-файл со следующим содержанием:

spec:
  containers:
  - command:
    - sleep
    args:
    - 100000
    env:
    - name: MYENV
      value: myvalue
    image:  cr.yandex/mirror/ubuntu:16.04
    name: my-container
    securityContext:
      privileged: false
    stdin: false
    tty: false
    volumeMounts:
      - mountPath: /home/yc-user/cache
        name: cache-volume
      - mountPath: /home/yc-user/data
        name: data-volume
  restartPolicy: Always
  volumes:
    - name: cache-volume
      emptyDir:
        medium: Memory
    - name: data-volume
      hostPath:
        path: /data

Ключи спецификации описаны в таблице:

Ключ Значение
сommand Команда, выполняемая при запуске Docker-контейнера.
args Аргументы, передаваемые запускаемой в Docker-контейнере команде.
env Переменные окружения, доступные внутри Docker-контейнера.
image Имя Docker-образа, на основе которого будет создан и запущен Docker-контейнер.
name Имя запускаемого Docker-контейнера.
securityContext Настройки безопасности и контроля доступа внутри Docker-контейнера. Поддерживается только возможность запуска привилегированного Docker-контейнера.
privileged Запуск Docker-контейнера в привилегированном режиме. Процессы в привилегированных Docker-контейнерах получают доступ ко всем системным устройствам и эквивалентны использованию root-прав на ВМ. Значение по умолчанию — false.
stdin Буфер для потока ввода во время выполнения Docker-контейнера. Поток ввода будет связан с запущенным Docker-контейнером. Значение по умолчанию — false.
tty Выделение TTY для Docker-контейнера. Значение по умолчанию - false.
restartPolicy Политика перезапуска Docker-контейнера.
volumeMounts Список томов для монтирования внутри Docker-контейнера.
mountPath Путь в Docker-контейнере, по которому будет смонтирован указанный том.
volumes Описание томов, используемых в спецификации.
emptyDir Пустая директория во временой файловой системе tmpfs, которая создается в оперативной памяти ВМ. Содержимое этой директории удаляется при остановке Docker-контейнера, в который она смонтирована, а также при перезагрузке ВМ. Для использования tmpfs необходимо указать параметр medium: Memory. Размер тома ограничен количеством оперативной памяти, выделеной для виртуальной машины.
hostPath Директория из файловой системы виртуальной машины, которая будет смонтирована в Docker-контейнер.
path Путь к директории hostPath.

Docker Compose спецификация

Инструкции для запуска Docker-контейнеров и конфигурации сервисов указываются в файле спецификации docker-compose.yaml, согласно документации Docker.
Подробнее о запуске нескольких Docker-контейнеров, читайте в разделе Создание ВМ с Container Optimized Image и несколькими Docker-контейнерами.

Пример Docker Compose спецификации

Docker Compose спецификация представляет из себя YAML-файл docker-compose.yaml со следующим содержанием:

version: '3.7'
services:
  app1:
    container_name: nginx
    image: "nginx"
    ports:
      - "80:80"
    restart: always
  app2:
    container_name: redis
    image: "redis"
    restart: always
  volumes:
      - /mnt/logs:/logs
      - /mnt/data:/data

x-yc-disks:
  - device_name: compute-disk-data
    fs_type: ext4
    host_path: /mnt/data
    partition: 1
  - device_name: compute-disk-data
    fs_type: ext4
    host_path: /mnt/logs
    partition: 2

Ключи спецификации описаны в таблице:

Ключ Значение
version Тег версии спецификации, с которого должен начинаться файл.
services Раздел, в котором описываются сервисы.
container_name Имя запускаемого Docker-контейнера.
image Имя Docker-образа, на основе которого будет создан и запущен Docker-контейнер.
ports Используется для перенаправления портов сервиса. Указывается в виде: <порт компьютера>:<порт контейнера>.
restart Настройка политики перезапуска Docker-контейнера.
volumes Описание томов, используемых в Docker-контейнере.
x-yc-disks Раздел, в котором описываются подключаемые диски. Представляет собой расширение спецификации Docker Compose. Используется при подготовке к запуску Docker-контейнеров, перед запуском Docker Compose. Docker Compose пропускает этот раздел.
device_name Имя устройства.
fs_type Тип файловой системы. Поддерживается только файловая система ext4.
host_path Директория, в которую монтируется диск.
partition Используемый раздел диска.
В этой статье:
  • Особенности работы с загрузочным диском
  • Особенности работы с сетью
  • Docker-образ
  • Политики перезапуска Docker-контейнера
  • Спецификации Docker-контейнера
  • COI спецификация
  • Docker Compose спецификация
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»