Поддержка контейнеров Linux в Функции Azure

Когда вы планируете и разрабатываете отдельные функции для работы в Функции Azure, сосредоточьтесь на самом коде. Платформа Функции Azure упрощает развертывание вашего проекта кода в функциональное приложение в Azure. Когда вы разворачиваете свой проект в приложении Linux, ваш код запускается в контейнере, который автоматически создаёт Функции Azure. Этот контейнер бесшовно интегрируется с инструментами управления функциями.

Функции также поддерживают развертывания контейнеризированных функциональных приложений. В контейнерном развертывании вы создаёте собственный экземпляр функционального приложения в локальном контейнере Docker из поддерживаемого базового образа. Затем вы можете развернуть это контейнеризованное функциональное приложение в среде размещения на Azure. Создание собственного контейнера приложения-функции позволяет настраивать или управлять средой непосредственной среды выполнения кода функции.

Important

При создании собственных контейнеров необходимо сохранить базовый образ контейнера обновленным до последнего поддерживаемого базового образа. Поддерживаемые базовые образы функций Azure зависят от языка. См. репозитории базовых образов Функций Azure.

Команда Functions обязуется публиковать ежемесячные обновления для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера. Дополнительные сведения см. в разделе "Обслуживание пользовательских контейнеров".

Параметры размещения контейнеров

Tip

Для большинства контейнеризированных рабочих нагрузок размещайте функциональные приложения в Контейнеры приложений Azure. Container Apps предоставляет полностью управляемую, бессерверную среду на базе Kubernetes с встроенным масштабированием событий, масштабированием до нуля и поддержкой GPU. Для начала см. Функции Azure on Контейнеры приложений Azure.

У вас есть несколько вариантов размещения ваших контейнеризованных функциональных приложений в Azure:

Вариант размещения Benefits
Контейнеры приложений Azure (Recommended) Контейнеры приложений Azure нативно размещает и управляет контейнерами ваших функциональных приложений с помощью Microsoft.App провайдера ресурсов. Запускайте свои функции в полностью управляемой, бессерверной среде на базе Kubernetes с встроенной поддержкой мониторинга с открытым исходным кодом, mTLS, Dapr и KEDA. Поддерживает масштабирование до нуля, бессерверное выставление счетов, выделенное оборудование и GPU через профили рабочей нагрузки. Вы получаете выгоду от той же модели программирования Functions и триггеров, одновременно получая полный набор функций Container Apps. Рекомендуемый вариант хостинга для контейнеризованных функциональных приложений в Azure.
Контейнеры приложений Azure (legacy) Функции Azure обеспечивает интегрированную поддержку развертывания контейнеризованных функциональных приложений в среду Container Apps с помощью Microsoft.Web провайдера ресурсов. Хотя в настоящее время поддерживается, этот вариант планируется для будущего списания. Для новых задач используйте рекомендованную опцию хостинга Container Apps.
Функции Azure Вы можете разместить контейнерные приложения-функции в Функциях Azure, размещая контейнер в плане Elastic Premium или Выделенного Плана Службы Приложений. Размещение плана "Премиум" обеспечивает преимущества динамического масштабирования. Вы можете использовать выделенный хостинг план для того, чтобы воспользоваться преимуществами существующих неиспользуемых ресурсов плана службы приложений.
Kubernetes Так как среда выполнения Функции Azure обеспечивает гибкость размещения, где и как хотите, можно размещать контейнеры приложений-функций и управлять ими непосредственно в кластерах Kubernetes. KEDA (управляемое событиями автоматическое масштабирование на основе Kubernetes) легко интегрируется со средой выполнения Функций Azure и инструментами для обеспечения масштабирования на основе событий в Kubernetes. Важный: Размещение контейнерных приложений-функций Kubernetes с помощью KEDA или прямого развертывания — это работа с открытым кодом, которую можно использовать бесплатно. Поддержка на основе принципа "лучших усилий" для этого сценария размещения предоставляется только участниками и сообществом. Вы несете ответственность за обслуживание собственных контейнеров приложений-функций в кластере, даже при развертывании их в службе Azure Kubernetes (AKS).

Сравнение поддержки функций

Степень поддержки различных функций и поведения Функции Azure при запуске функционального приложения в контейнере зависит от выбранного параметра размещения контейнера.

Feature/behavior Контейнерные приложения (рекомендуют) Контейнерные приложения (наследие)1 План "Премиум" Выделенный план Kubernetes
Поддержка продуктов Yes Yes Yes Yes No
Интеграция портала функций Yes No Yes Yes No
Масштабирование на основе событий Да (правила масштабирования) Yes5 Yes No No
Максимальный масштаб (экземпляры) 10002 10002 1003 10-304 Варьируется в зависимости от кластера
Экземпляры с масштабированием до нуля Yes Yes No No KEDA
Ограничение времени выполнения Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Развертывание основных средств No No No No func kubernetes
Revisions Yes Yes No No No
Слоты развертывания No No Yes Yes No
Журналы потоковой передачи Yes Yes Yes Yes No
Доступ к консоли Yes Yes Да (используя Kudu) Да (используя Kudu) Да (в модулях с использованием kubectl)
Минимизация последствий холодного запуска Правила масштабирования Минимальное количество копий Всегда готовые и разогретые экземпляры n/a n/a
Проверка подлинности службы приложений Yes Yes Yes Yes No
Личные доменные имена Yes Yes Yes Yes No
Сертификаты закрытого ключа Yes Yes Yes Yes No
Виртуальные сети Yes Yes Yes Yes Yes
Зоны доступности Yes Yes Yes Yes Yes
Diagnostics Yes Yes Yes Yes No
Выделенное оборудование Да (профили рабочей нагрузки) Да (профили рабочей нагрузки) No Yes Yes
Выделенные графические процессоры Да (профили рабочей нагрузки) Да (профили рабочей нагрузки) No No Yes
Настраиваемое количество памяти и ЦП Yes Yes No No Yes
Опция «Бесплатный грант» Yes Yes No No No
Сведения о ценах Выставление счетов за контейнерные приложения Выставление счетов за контейнерные приложения Выставление счетов за план "Премиум" Выставление счетов за выделенный план Цены на AKS
Требования к имени службы 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Нельзя начинать или заканчивать слово дефисом. Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Нельзя начинать или заканчивать слово дефисом. Менее 253 символов: ограничено буквенно-цифровыми символами и дефисами. Должен начинаться и заканчиваться буквенно-цифровым символом.
  1. Запланировано на будущий список. Вместо этого используйте нативный хостинг Container Apps.
  2. В контейнерных приложениях по умолчанию используется 10 экземпляров, но можно задать максимальное количество реплик, которое имеет общее максимальное значение 1000. Этот параметр учитывается до тех пор, пока доступно достаточно квоты ядер. При создании приложения-функции из портала Azure вы ограничены до 300 экземпляров.
  3. В некоторых регионах приложения Linux в плане "Премиум" могут масштабироваться до 100 экземпляров. Дополнительную информацию см. в статье "План Премиум".
  4. К конкретным ограничениям для различных вариантов планов Службы приложений см. ограничения плана Службы приложений.
  5. Требуется KEDA; поддерживается большинством триггеров. Сведения о том, какие триггеры поддерживают масштабирование на основе событий, см. в разделе "Рекомендации по размещению контейнерных приложений".
  6. Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.
  7. Не применяется максимальное время ожидания выполнения. Однако льготный период, предоставленный выполнению функции, составляет 60 минут во время масштабирования, а льготный период 10 минут предоставляется во время обновлений платформы.
  8. Требуется, чтобы план службы приложений был настроен на Always On. Льготный период 10 минут предоставляется во время обновлений платформы.

Обслуживание пользовательских контейнеров

При создании собственных контейнеров обновляйте базовый образ контейнера до последнего поддерживаемого базового образа. Базовые образы, поддерживаемые для Функций Azure, специфичны для языка и находятся в репозиториях базовых образов Функций Azure.

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

Выберите базовый образ на основе стека языка, который вы используете в приложении-функции. В следующей таблице приведены примеры для каждого стека. В общем, тег начинается с 4- , чтобы обозначить время выполнения V4 Functions. Когда выходят новые мелкие версии, этот тег обновляется, чтобы указывать на новую версию. Периодически восстанавливая свой собственный образ, вы перебираете новые версии через тот же тег, чтобы ваше приложение получало те же обновления. Не используйте теги с указанием незначительных версий выполнения — эти теги не получают обновлений. Ваше приложение может остаться в неисправленной версии, независимо от того, как часто вы будете восстанавливать свой собственный образ.

Языковой стек Пример рекомендуемых тегов базового образа
.NET (изолированная рабочая модель) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 или
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

Эти примеры предназначены для .NET 8. Выберите подходящий образ для нужной вам версии .NET.
.NET (устаревшая внутрипроцессная модель) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 или
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(Поддержка для модели в процессе заканчивается 10 ноября 2026 года. Как можно скорее перейти к модели изолированного работника .)
Ява mcr.microsoft.com/azure-functions/java:4-java21 или
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Эти примеры предназначены для Java 21. Выберите подходящий образ для нужной версии Java.)
Node.js (JavaScript или TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 или
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Эти примеры нацелены на Node.js 22. Выберите подходящее изображение для версии Node.js, которая вам нужна.)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 или
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Эти примеры предназначены для PowerShell 7.4. Выберите подходящий образ для нужной версии PowerShell.)
Питон mcr.microsoft.com/azure-functions/python:4-python3.12 или
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Эти примеры предназначены для Python 3.12. Выберите подходящий образ для нужной версии Python.)
Пользовательские обработчики / другие mcr.microsoft.com/azure-functions/base:4 или
mcr.microsoft.com/azure-functions/base:4-appservice

Базовые образы, заканчивающиеся на -appservice, позволяют использовать SSH и удаленную отладку с платформы. Если вам не нужны эти возможности, используйте базовые изображения без -appservice суффикса.

Important

Недостаточно просто иметь один из предыдущих тегов в вашем Dockerfile. Необходимо регулярно извлекать последний образ из этого тега, чтобы пользовательский образ можно было перестроить, чтобы включить последние обновления. Если вы не вытащите последний образ и не собрали его, ваше приложение продолжит работать на старом базовом образе.

Когда вы создаёте или развертаете собственное контейнерное приложение, используя пользовательский образ, вы отвечаете за то, чтобы ваше изображение оставалось up-to-date с выпущенными базовыми изображениями. Помимо новых функций и улучшений, эти обновления базового образа также могут включать обновления системы безопасности, критически важные для вашего приложения. Чтобы убедиться, что ваше приложение защищено, убедитесь, что вы остаетесь в курсе. Регулярно извлекайте последнюю версию базового образа, перестраивайте свой кастомный образ контейнера и перезапускайте приложение для его использования.

В некоторых случаях Microsoft обязана вносить изменения на уровне платформы, которые могут привести к тому, что приложение в пользовательском контейнере с использованием старого базового образа перестанет работать корректно. Для таких крупных изменений Microsoft заранее выпускает обновлённые изображения, чтобы приложения, которые регулярно обновляются, не пострадали. Чтобы избежать потенциальных проблем с приложениями, работающими в пользовательских контейнерах, убедитесь, что вы не отстаёте от последней выпущенной минорной версии. Во время обращения в поддержку, если Microsoft определит, что у вашего приложения проблемы из-за более старой или неподдерживаемой версии, Microsoft просит обновить контейнер до последней базовой версии образа перед продолжением поддержки.

Начало работы

Используйте следующие ссылки, чтобы приступить к работе с Функции Azure в контейнерах Linux:

Я хочу... См. статью:
Deploy functions to Контейнеры приложений Azure (recommended) Создание первых контейнерных функций в приложениях контейнеров Azure
Создаю свои первые контейнерные функции локально Создание приложения-функции в локальном контейнере Linux
Развернуть контейнерные функции в Premium или Dedicated плане Создайте свои первые контейнеризованные функции Azure