Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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. |
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 omcr.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 omcr.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 omcr.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 omcr.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 omcr.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 omcr.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 omcr.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 |