Compatibilidad con contenedores de Linux en Azure Functions

Cuando planifiques y desarrolles tus funciones individuales para ejecutarlas en Azure Functions, céntrate en el propio código. Azure Functions facilita la implementación del proyecto de código en una aplicación de funciones en Azure. Cuando despliegas tu proyecto en una aplicación de funciones de Linux, tu código se ejecuta en un contenedor que Azure Functions crea automáticamente para ti. Este contenedor se integra perfectamente con las herramientas de gestión de funciones.

Functions también admite implementaciones de aplicaciones de funciones en contenedor. En un despliegue contenedorizado, creas tu propia instancia de aplicación de funciones en un contenedor Docker local a partir de una imagen base soportada. 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

Tip

Para la mayoría de las cargas de trabajo contenedorizadas, aloja tus aplicaciones de función en Azure Container Apps. Contenedores Apps ofrece un entorno totalmente gestionado, sin servidor, basado en Kubernetes, con escalado integrado basado en eventos, escalado a cero y soporte para GPU. Para empezar, consulta Azure Functions on Azure Container Apps.

Tienes varias opciones para alojar tus aplicaciones de funciones contenedorizadas en Azure:

Opción de hospedaje Benefits
Azure Container Apps (Recommended) Azure Container Apps aloja y gestiona tus contenedores de aplicaciones de función de forma nativa usando el proveedor de Microsoft.App recursos. Ejecuta tus funciones en un entorno totalmente gestionado, sin servidor, basado en Kubernetes, con soporte integrado para monitorización de código abierto, mTLS, Dapr y KEDA. Soporta facturación escalable a cero, sin servidor, de pago por lo que uses, hardware dedicado y GPUs mediante perfiles de carga de trabajo. Te beneficias del mismo modelo de programación de funciones y disparadores, mientras obtienes todo el conjunto de funciones de Contenedores Apps. Opción de alojamiento recomendada para aplicaciones de función contenedor en Azure.
Azure Container Apps (legacy) Azure Functions ofrece soporte integrado para desplegar aplicaciones de función contenedor en un entorno de Aplicaciones de Contenedor mediante el proveedor de Microsoft.Web recursos. Aunque actualmente está soportada, esta opción está prevista para su posterior descontinuación. Para cargas de trabajo nuevas, utiliza la opción recomendada de alojamiento de Aplicaciones en Contenedores.
Funciones de Azure 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). 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 Aplicaciones de contenedores (recomendadas) Aplicaciones de contenedores (legacy)1 Plan Premium Plan dedicado Kubernetes
Soporte técnico del producto Yes Yes Yes Yes No
Integración con portales de funciones Yes No Yes Yes No
Escalado controlado por eventos Sí (reglas de escalado) Yes5 Yes No No
Escala máxima (instancias) 10002 10002 1003 10-304 Varía según el grupo
Instancias de escalado a cero Yes Yes No No KEDA
Límite de tiempo de ejecución Unbounded6 Unbounded6 Unbounded7 Unbounded8 Ninguno
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í (usando Kudu) Sí (usando Kudu) Sí (en pods mediante kubectl)
Mitigación de arranque en frío Reglas de escalado Réplicas mínimas 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 de "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. Planeado para su futura defunción. En su lugar, utiliza alojamiento nativo de Aplicaciones Contenedor.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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

Cuando crees tus propios contenedores, mantén la imagen base actualizada a la última imagen base soportada. 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. Actualiza regularmente tu contenedor desde la última imagen base y vuelve a desplegar la versión actualizada de tu 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 comienza con 4- para indicar el tiempo de ejecución de las Funciones V4. Cuando se lanzan nuevas versiones menores, esta etiqueta se actualiza para señalar la nueva versión. A medida que reconstruyes periódicamente tu imagen personalizada, extraes las nuevas versiones a través de esa misma etiqueta, así que tu app tiene las mismas actualizaciones. No uses etiquetas que especifiquen versiones menores en tiempo de ejecución, ya que estas etiquetas no reciben actualizaciones. Tu app puede permanecer en una versión sin parchear, sin importar cuántas veces reconstruyas tu 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 para el modelo en proceso finaliza el 10 de noviembre de 2026. Migrar al modelo de trabajador 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 necesites estas capacidades, usa las imágenes base sin el -appservice sufijo.

Important

No basta con tener solo una de las etiquetas anteriores en tu archivo Docker. 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 última imagen y la reconstruyes, tu app sigue funcionando en la imagen base antigua.

Cuando creas o despliegas tu propia aplicación contenedora usando una imagen personalizada, eres responsable de asegurarte de que tu imagen personalizada se mantenga up-tofecha con las 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. Extrae regularmente la última versión de la imagen base, reconstruye tu imagen personalizada del contenedor y vuelve a desplegar tu app para usarla.

En algunos casos, Microsoft está obligada a realizar cambios a nivel de plataforma que podrían hacer que una aplicación en un contenedor personalizado que use una imagen base antigua deje de funcionar correctamente. Para estos cambios importantes, Microsoft despliega imágenes actualizadas con mucha antelación para que las aplicaciones que reciben actualizaciones regulares 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, si Microsoft determina que tu aplicación está teniendo problemas porque está en una versión anterior o no soportada, Microsoft te solicita que actualices tu contenedor a la última versión de la imagen base 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:
Despliegue funciones en Azure Container Apps (recomendado) Creación de las primeras funciones contenedorizadas en Azure Container Apps
Crear mi primera función contenedora localmente Creación de una aplicación de funciones en un contenedor de Linux local
Despliega funciones contenedorizadas en un plan Premium o Dedicado Cree sus primeras de Azure Functions en contenedores