[Документация Yandex Cloud](../../index.md) > [Yandex Serverless Containers](../index.md) > [Концепции](index.md) > Среда выполнения

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

Приложение выполняется в виртуальном окружении.

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

* операционная система — Ubuntu 22.04 LTS;
* ядро Linux — 5.15;
* архитектура — AMD64.

## Поддерживаемые языки и образы {#image}

Приложение может быть написано на любом языке программирования и использовать любой образ, который удовлетворяет следующим требованиям:
* Исполняемые файлы скомпилированы под Linux x86_64.
* Доступные форматы образов — [Docker Image Manifest V 2, Schema 2](https://docs.docker.com/registry/spec/manifest-v2-2/) и [OCI Image Format](https://github.com/opencontainers/image-spec).

## Ответ контейнера {#response}

Процесс, который запускается при вызове контейнера, зависит от [режима работы контейнера](container.md#runtime).

Вызов контейнера завершается в одном из следующих случаев:

* Serverless Containers обработал HTTP-запрос за заданный таймаут и вернул HTTP-ответ в соответствии с [режимом работы контейнера](container.md#runtime). Таймаут включает в себя время запуска экземпляра контейнера.
* Serverless Containers не успел обработать HTTP-запрос за заданный таймаут и вернул ошибку 504.
* Произошла инфраструктурная ошибка или ошибка инициализации, информация о которой будет передана в теле ответа.

## Переменные окружения {#environment-variables}

В таблице приведен список переменных окружения, которые определены в среде выполнения Serverless Containers и доступны приложению. Их нельзя переопределить.

Ключ | Значение
---- | ----
`PORT` | Сетевой порт, на который среда выполнения передает HTTP-запросы в приложение.
`REQUEST_PATH` | Данные HTTP-запроса к контейнеру, если [режим работы контейнера](container.md#runtime) — **Выполнение команд**.

Добавить дополнительные переменные окружения можно при [создании ревизии контейнера](../operations/manage-revision.md#create) или сборке [Docker-образа](../../container-registry/concepts/docker-image.md). [Лимит](limits.md#serverless-containers-limits) на максимальный объем переменных окружения, включая их имена, — 4 КБ.

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

Получить переменные окружения можно с помощью стандартных средств языка программирования.

## Файловая система {#file-system}

Файлы и директории образа контейнера доступны для чтения на файловой системе виртуальной среды. Файловая система доступна на запись. Доступный для записи объем ограничен, подробнее в [Квоты и лимиты](limits.md).

Файловая система хранится в RAM. Данные, записанные в файловую систему, не сохраняются при остановке экземпляра контейнера.

## Ресурсы экземпляра контейнера {#resource}

### CPU {#cpu}

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

### RAM {#ram}

Каждому экземпляру контейнера выделяется ресурс RAM. По умолчанию — 128 МБ.

Например, RAM расходуется при:

* записи в файловую систему;
* запуске процессов в контейнере;
* обработке запросов.

### Соотношение RAM и vCPU {#ratio}

Количество доступных ядер зависит от указанного объема памяти.

RAM | CPU
--- | ---
128 МБ – 4 ГБ (не включительно) | 1 vCPU, гарантированная доля vCPU — до 100 % 
4 ГБ – 6 ГБ (не включительно) | 2 vCPU, гарантированная доля vCPU — до 100 %
6 ГБ – 8 ГБ (не включительно) | 3 vCPU, гарантированная доля vCPU — до 100 %
8 ГБ | 4 vCPU, гарантированная доля vCPU — до 100 %

## Сервис метаданных {#metadata}

Внутри виртуальной среды выполнения контейнера доступен сервис метаданных. Из сервиса метаданных можно [получить IAM-токен сервисного аккаунта](../operations/sa.md), если сервисный аккаунт был указан при создании ревизии контейнера.