Образ Container Optimized Image

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

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

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

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

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:hello.

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

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

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

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

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

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

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

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

Примечание

Запуск нескольких Docker-контейнеров не поддерживается. В спецификации должен быть указан только один Docker-контейнер.

Спецификация представляет из себя 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
  restartPolicy: Always

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

Ключ Значение
с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-контейнера.