Compartir vía


Compatibilidad con contenedores de Linux en Azure Functions

Al planear y desarrollar las funciones individuales para que se ejecuten en Azure Functions, normalmente se centra en el propio código. Azure Functions facilita la implementación del proyecto de código en una aplicación de funciones en Azure. Al implementar el proyecto en una aplicación de funciones de Linux, el código se ejecuta en un contenedor que se crea automáticamente y se integra perfectamente con las herramientas de administración de Functions.

Functions también admite implementaciones de aplicaciones de funciones en contenedor. En una implementación en contenedor, creará su propia instancia de aplicación de función en un contenedor de Docker local a partir de una imagen basada en compatibilidad. A continuación, puede implementar esta aplicación de funciones en contenedor en un entorno de hospedaje en Azure. La creación de su propio contenedor de aplicaciones de funciones le permite personalizar o controlar de otro modo el entorno de tiempo de ejecución inmediato del código de función.

Important

Al crear sus propios contenedores, es necesario mantener actualizada la imagen base del contenedor a la imagen base compatible más reciente. Las imágenes base admitidas para Azure Functions son específicas del lenguaje. Consulte los repositorios de imágenes base de Azure Functions.

El equipo de Functions se compromete a publicar actualizaciones mensuales de estas imágenes base. Las actualizaciones periódicas incluyen las actualizaciones de versión secundaria y las correcciones de seguridad más recientes tanto del entorno de ejecución de Functions como de los lenguajes. Debería actualizar periódicamente el contenedor a partir de la imagen base más reciente y volver a realizar la implementación a partir de la versión actualizada del contenedor. Para obtener más información, consulte Mantenimiento de contenedores personalizados.

Opciones de hospedaje de contenedores

Hay varias opciones para hospedar las aplicaciones de funciones en contenedor en Azure:

Opción de hospedaje Benefits
Azure Container Apps Azure Functions proporciona compatibilidad integrada para desarrollar, implementar y administrar aplicaciones de funciones contenedorizadas en Azure Container Apps. Esta integración le permite administrar las aplicaciones con las mismas herramientas y páginas de Functions en Azure Portal. Use Azure Container Apps para hospedar el contenedor de la aplicación de funciones en el mismo entorno que otros microservicios, API, sitios web, flujos de trabajo u otros programas hospedados en contenedores. El hospedaje de Container Apps permite ejecutar las funciones en un entorno administrado basado en Kubernetes con compatibilidad integrada con la supervisión de código abierto, mTLS, Dapr y KEDA. Es compatible con el escalado a cero y ofrece un modelo de hospedaje sin servidor de pago por uso. También puede solicitar hardware dedicado, incluso GPU, mediante perfiles de carga de trabajo. Opción de hospedaje recomendada para aplicaciones de funciones en contenedor n Azure.
Clústeres de Kubernetes habilitados para Azure Arc (versión preliminar) Puede hospedar las aplicaciones de funciones en clústeres de Kubernetes habilitados para Azure Arc como una implementación solo de código o en un contenedor de Linux personalizado. Azure Arc le permite asociar clústeres de Kubernetes para que pueda administrarlos y configurarlos en Azure. El hospedaje de contenedores de Azure Functions en clústeres de Kubernetes habilitados para Azure Arc está actualmente en versión preliminar. Para obtener más información, consulte Trabajar con contenedores y Azure Functions.
Azure Functions Puede hospedar sus aplicaciones de funciones contenedorizadas en Azure Functions ejecutando el contenedor en un plan Premium elástico o un plan App Service (dedicado). Use el hospedaje de Container Apps para obtener compatibilidad enriquecida con contenedores desde Container Apps. El hospedaje del plan Premium proporciona las ventajas del escalado dinámico. Es posible que quiera usar el hospedaje del plan dedicado para aprovechar las ventajas de los recursos del plan de App Service no utilizados existentes.
Kubernetes Dado que el entorno de ejecución de Azure Functions proporciona flexibilidad para hospedar dónde y cómo quiere, puede hospedar y administrar los contenedores de la aplicación de funciones directamente en clústeres de Kubernetes. KEDA (escalado automático controlado por eventos basado en Kubernetes) se empareja perfectamente con el entorno de ejecución y las herramientas de Azure Functions para proporcionar escalado controlado por eventos en Kubernetes. Importante: El hospedaje de Kubernetes de las aplicaciones de funciones en contenedor, ya sea mediante KEDA o la implementación directa, es un esfuerzo de código abierto que puede usar sin costo. El soporte de mejor esfuerzo para este escenario de hosting solo lo proporcionan los colaboradores y la comunidad. Es responsable de mantener sus propios contenedores de aplicaciones de funciones en un clúster, incluso al implementarlos en Azure Kubernetes Service (AKS).

Comparación de compatibilidad de características

El grado en que se admiten diversas características y comportamientos de Azure Functions al ejecutar la aplicación de funciones en un contenedor depende de la opción de hospedaje del contenedor que elija.

Feature/behavior Container Apps (integrado) Container Apps (directo) Plan Premium Plan dedicado Kubernetes
Soporte técnico del producto Yes No Yes Yes No
Integración del portal de Functions No No Yes Yes No
Escalado controlado por eventos Yes5 Sí (reglas de escalado) Yes No No
Escala máxima (instancias) 10001  10001  1002  10-303  Varía en función del clúster
Instancias de escalado a cero Yes Yes No No KEDA
Límite de tiempo de ejecución Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Implementación de Core Tools No No No No func kubernetes 
Revisions Yes  Yes No No No
Ranuras de implementación  No No Yes Yes No
Registros de streaming  Yes  Yes  Yes Yes No
Acceso a la consola  Yes  Yes Sí (con Kudu) Sí (con Kudu) Sí (en pods mediante kubectl)
Mitigación de arranque en frío Réplicas mínimas Reglas de escalado  Instancias siempre listas/precalentadas  n/a n/a
Autenticación de App Service  Yes  Yes Yes Yes No
Nombres de dominio personalizados  Yes  Yes Yes Yes No
Certificados de clave privada  Yes  Yes Yes Yes No
Redes virtuales Yes  Yes Yes Yes Yes
Zonas de disponibilidad Yes  Yes Yes Yes Yes
Diagnostics Yes  Yes Yes  Yes  No
Hardware dedicado Sí (perfiles de carga de trabajo) Sí (perfiles de carga de trabajo) No Yes Yes
GPU dedicadas Sí (perfiles de carga de trabajo) Sí (perfiles de carga de trabajo) No No Yes
Recuento de memoria/CPU configurable Yes Yes No No Yes
Opción "Concesión gratuita" Yes Yes No No No
Detalles de precios Facturación de Container Apps Facturación de Container Apps Facturación del plan Premium Facturación de plan dedicado Precios de AKS
Requisitos de nombre de servicio 2-32 caracteres: limitado a letras minúsculas, números y guiones. Debe comenzar con una letra y terminar con un carácter alfanumérico. 2-32 caracteres: limitado a letras minúsculas, números y guiones. Debe comenzar con una letra y terminar con un carácter alfanumérico. Menos de 64 caracteres: limitado a caracteres alfanuméricos y guiones. No puede empezar ni terminar con un guion. Menos de 64 caracteres: limitado a caracteres alfanuméricos y guiones. No puede empezar ni terminar con un guion. Menos de 253 caracteres: limitado a caracteres alfanuméricos y guiones. Debe empezar y terminar con un carácter alfanumérico.
  1. En Container Apps, el valor predeterminado es 10 instancias, pero puede establecer el número máximo de réplicas en 1000. Esta configuración se respeta siempre que haya suficiente cuota de núcleos disponible. Si crea la aplicación de funciones en Azure Portal, tendrá un límite de 300 instancias.
  2. En algunas regiones, las aplicaciones de Linux de un plan Premium se pueden escalar a 100 instancias. Para obtener más información, consulte el artículo Plan Premium.
  3. Para conocer los límites específicos de las distintas opciones del plan de App Service, consulte los límites del plan de App Service.
  4. Requiere KEDA; compatible con la mayoría de los desencadenadores. Para saber qué desencadenadores son compatibles con el escalado controlado por eventos, consulte Consideraciones para el hospedaje de Container Apps.
  5. Cuando el número mínimo de réplicas se establece en cero, el tiempo de espera predeterminado depende de los desencadenadores específicos usados en la aplicación.
  6. No se impone una duración máxima del tiempo de espera de ejecución. Sin embargo, el periodo de gracia concedido a la ejecución de una función es de 60 minutos durante la reducción horizontal, y se concede un periodo de gracia de 10 minutos durante las actualizaciones de la plataforma.
  7. Requiere que el plan de App Service se establezca en AlwaysOn. Se da un período de gracia de 10 minutos durante las actualizaciones de la plataforma.

Mantenimiento de contenedores personalizados

Al crear sus propios contenedores, es necesario mantener actualizada la imagen base del contenedor a la imagen base compatible más reciente. Las imágenes base admitidas para Azure Functions son específicas del lenguaje y se encuentran en los repositorios de imágenes base de Azure Functions.

El equipo de Functions se compromete a publicar actualizaciones mensuales de estas imágenes base. Las actualizaciones periódicas incluyen las actualizaciones de versión secundaria y las correcciones de seguridad más recientes tanto del entorno de ejecución de Functions como de los lenguajes. Debería actualizar periódicamente el contenedor a partir de la imagen base más reciente y volver a realizar la implementación a partir de la versión actualizada del contenedor.

Elija la imagen base según el stack de lenguaje que está usando en su aplicación de funciones. En la tabla siguiente se proporcionan ejemplos para cada pila. En general, la etiqueta debe comenzar con 4- para indicar el tiempo de ejecución de funciones V4. Cuando se publiquen nuevas versiones secundarias, esta etiqueta se actualizará para que apunte a la nueva versión. A medida que reconstruyas periódicamente tu imagen personalizada, descargarás las nuevas versiones a través de esa misma etiqueta, permitiendo que tu aplicación tenga las mismas actualizaciones. No debe usar etiquetas que especifiquen versiones menores en tiempo de ejecución, ya que no recibirán actualizaciones, y la aplicación podría permanecer en una versión no corregida, independientemente de la frecuencia con la que vuelva a generar la imagen personalizada.

Conjunto de lenguajes Etiquetas de imagen base recomendadas de ejemplo
.NET (modelo de trabajo aislado) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 o
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(Estos ejemplos tienen como destino .NET 8. Seleccione la imagen adecuada para la versión de .NET que necesita).
.NET (modelo heredado dentro del proceso) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 o
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(El soporte técnico finalizará para el modelo en proceso el 10 de noviembre de 2026. Debe migrar al modelo de trabajo aislado lo antes posible).
Java mcr.microsoft.com/azure-functions/java:4-java21 o
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Estos ejemplos tienen como destino Java 21. Seleccione la imagen adecuada para la versión de Java que necesita).
Node.js (JavaScript o TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 o
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Estos ejemplos tienen como destino Node.js 22. Seleccione la imagen adecuada para la versión de Node.js que necesita).
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 o
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Estos ejemplos tienen como destino PowerShell 7.4. Seleccione la imagen adecuada para la versión de PowerShell que necesita).
Pitón mcr.microsoft.com/azure-functions/python:4-python3.12 o
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Estos ejemplos tienen como destino Python 3.12. Seleccione la imagen adecuada para la versión de Python que necesita).
Controladores personalizados / otros mcr.microsoft.com/azure-functions/base:4 o
mcr.microsoft.com/azure-functions/base:4-appservice

Las imágenes base cuyo nombre termina en -appservice habilitan SSH y la depuración remota desde la plataforma. A menos que necesite estas funcionalidades, puede usar las imágenes base sin el -appservice sufijo .

Important

No basta con tener una de las etiquetas anteriores en el Dockerfile. Debe extraer periódicamente la imagen más reciente de esa etiqueta para que se pueda volver a generar la imagen personalizada para incluir las actualizaciones más recientes. Si no extraes la imagen más reciente y vuelves a generarla, la aplicación seguirá ejecutándose en la imagen base antigua.

Al crear o implementar su propia aplicación en contenedores mediante una imagen personalizada, es responsable de asegurarse de que la imagen personalizada permanezca actualizada con nuestras imágenes base publicadas. Además de las nuevas características y mejoras, estas actualizaciones de imágenes base también pueden incluir actualizaciones de seguridad críticas para la aplicación. Para asegurarse de que la aplicación está protegida, asegúrese de que permanece actualizado. Debe extraer periódicamente la versión más reciente de la imagen base, reconstruir su imagen de contenedor personalizada y desplegar nuevamente su aplicación para usarla.

En algunos casos, es necesario realizar cambios en el nivel de plataforma que podrían significar que una aplicación de un contenedor personalizado con una imagen base antigua podría dejar de funcionar correctamente. Para estos cambios importantes, implementamos imágenes actualizadas de antemano para que las aplicaciones que toman actualizaciones periódicas no se vean afectadas negativamente. Para evitar posibles problemas con las aplicaciones que se ejecutan en contenedores personalizados, asegúrese de no quedarse demasiado atrás de la versión menor más reciente publicada. Durante un caso de soporte técnico, si determinamos que su aplicación experimenta problemas porque está en una versión anterior o no admitida, solicitamos encarecidamente que actualice el contenedor a la versión de la imagen base más reciente antes de continuar con el soporte.

Cómo empezar

Use estos vínculos para empezar a trabajar con Azure Functions en contenedores de Linux:

Quiero... Consulte el artículo:
Creación de mis primeras funciones en contenedor Creación de una aplicación de funciones en un contenedor de Linux local
Creación e implementación de funciones en Azure Container Apps Creación de las primeras funciones contenedorizadas en Azure Container Apps
Creación e implementación de funciones en contenedor en Azure Functions Cree sus primeras de Azure Functions en contenedores