tocdepth

2

Среда выполнения в Container Apps

Характеристики среды выполнения:

  • Операционная система — Debian GNU/Linux 11 «Bullseye»

  • Ядро Linux — 5.15

Требования к образу

Образ должен удовлетворять следующим требованиям:

  • Язык программирования — любой.

  • Доступный формат образа — Docker Image Manifest V 2.

  • Docker-образ должен имплементировать любой тип веб-сервера и определять номер порта, на котором контейнер будет принимать запросы.

  • Docker-образ должен быть собран под плафторму linux/amd64.

    Container Apps пока не поддерживает запуск Docker-oбразов, собранных под другие платформы. При использовании Apple Mac с процессором серии М образ по умолчанию собирается под платформу arm64.

    При работе на Mac добавляйте в команду скачивания и сборки образа параметр --platform linux/amd64.

  • В Docker-образе не должны использоваться настройки для подключения томов (volumes) к контейнеру.

    Если образ был собран на основе Dockerfile, который содержит инструкцию VOLUME, то такой образ пока не может использоваться для развертывания контейнера в Container Apps.

  • Если контейнер запускается от имени root-пользователя, то при создании контейнера в Container Apps необходимо включить привилегированный режим, иначе контейнер не запустится.

  • Если контейнер запускается не от имени root-пользователя, то в Dockerfile укажите команду создания пользователя с идентификатором 1000 и назначьте ему права на пользовательскую директорию:

    RUN addgroup -g 1000 appuser \
        && adduser -u 1000 -G appuser -s /bin/sh -D appuser
    RUN chown -R 1000 /mydirectory
    

    где /mydirectory — название директории в вашем приложении.

    По умолчанию контейнеры в Container Apps запускаются от имени пользователя с идентификатором (UID) 1000, если не включен привилегированный режим.

  • Docker-образ не должен находиться в карантине из-за наличия уязвимостей в реестре Artifact Registry, иначе его будет невозможно использовать для развертывания контейнера.

Вычислительный ресурс

Для каждого экземпляра контейнера выделяются следующие ресурсы:

  • vCPU

    Ресурс vCPU выделяется всегда, когда экземпляр контейнера обрабатывает запрос.

  • RAM

    RAM расходуется при обработке запросов и запуске процессов в контейнере.

Переменные окружения

Добавить дополнительные переменные окружения можно при сборке Docker-образа или при создании контейнера.

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

Получить переменные окружения можно с помощью стандартных средств языка программирования. Переменные, заданные при создании контейнера, также отображаются в личном кабинете в разделе Container Apps → Ревизии → Переменные.

Добавление переменных при создании контейнера

В Container Apps вы можете задать переменные среды выполнения при создании контейнера или ревизии. Эти переменные среды загружаются в контейнерное приложение во время выполнения.

Значение переменной может быть реальным значением или ссылкой на секрет. В секреты рекомендуем добавлять чувствительные данные — например, пароль от базы данных, к которой обращается приложение.

Для использования в значении переменной секрета, его нужно предварительно создать в сервисе Secret Manager. Секрет может иметь несколько версий. Единовременно может быть активна только одна версия секрета — последняя созданная. Вы можете управлять версиями секретов в интерфейсе Secret Manager в личном кабинете.

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

Привилегированный режим (privileged mode)

Сервис Container Apps поддерживает запуск контейнеров в привилегированном режиме (privileged mode).

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

По умолчанию контейнеры в Container Apps запускаются в непривилегированном режиме, от имени пользователя с идентификатором (UID) 1000. Если при создании контейнера включить опцию Привилегированный режим, то контейнер будет запущен от имени root-пользователя.

Контейнеры в привилегированном режиме обычно используются:

  • для приложений, которым требуются расширенные права для запуска;

  • если приложение активно использует системные вызовы в процессе выполнения, например Docker-in-Docker в контейнере.

В остальных случаях рекомендуем запускать контейнеры в Container Apps в непривилегированном режиме.

Запустили Evolution free tier
для Dev & Test
Получить