Suporte a contêineres Linux no Funções do Azure

Quando planeias e desenvolves as tuas funções individuais para correr no Funções do Azure, foca-te no próprio código. O Funções do Azure facilita a implantação apenas do seu projeto de código em um aplicativo de função no Azure. Quando implementas o teu projeto numa aplicação de funções Linux, o teu código corre num contentor que o Funções do Azure cria automaticamente para ti. Este contentor integra-se perfeitamente com ferramentas de gestão de funções.

O Functions também oferece suporte a implantações de aplicativos de função em contêineres. Numa implementação containerizada, cria-se a sua própria instância de aplicação de funções num contentor Docker local a partir de uma imagem base suportada. Em seguida, você pode implantar esse aplicativo de função em contêiner em um ambiente de hospedagem no Azure. Criar seu próprio contêiner de aplicativo de função permite que você personalize ou, de outra forma, controle o ambiente de tempo de execução imediato do seu código de função.

Important

Ao criar seus próprios contêineres, é necessário manter a imagem base do contêiner atualizada para a imagem base suportada mais recente. As imagens base suportadas para o Funções do Azure são específicas do idioma. Consulte os repositórios de imagem base do Funções do Azure.

A equipa do Functions está empenhada em publicar atualizações mensais para estas imagens base. As atualizações regulares incluem as últimas atualizações de versões menores e correções de segurança para ambos o tempo de execução e os idiomas das Funções. Você deve atualizar regularmente seu contêiner a partir da imagem base mais recente e reimplantar a versão atualizada do contêiner. Para obter mais informações, consulte Mantendo contêineres personalizados.

Opções de hospedagem de contêiner

Tip

Para a maioria dos workloads containerizados, aloje as suas aplicações de funções no Azure Container Apps. O Container Apps oferece um ambiente totalmente gerido, serverless, baseado em Kubernetes, com escalabilidade orientada a eventos incorporada, escala até zero e suporte a GPU. Para começar, veja Funções do Azure on Azure Container Apps.

Tem várias opções para alojar as suas aplicações de funções containerizadas no Azure:

Opção de hospedagem Benefits
Azure Container Apps (Recommended) O Azure Container Apps hospeda e gere nativamente os seus contentores de aplicações funcionais, usando o fornecedor de Microsoft.App recursos. Execute as suas funções num ambiente totalmente gerido, serverless baseado em Kubernetes, com suporte incorporado para monitorização open-source, mTLS, Dapr e KEDA. Suporta faturação de pagamento sem servidor, hardware dedicado e GPUs através de perfis de carga de trabalho, escalável para zero. Beneficia do mesmo modelo de programação de Funções e gatilhos, ao mesmo tempo que ganha o conjunto completo de funcionalidades das Aplicações Container. Opção de alojamento recomendada para aplicações de funções containerizadas no Azure.
Azure Container Apps (legacy) O Funções do Azure oferece suporte integrado para a implementação de aplicações de funções containerizadas num ambiente de Aplicações Container, utilizando o fornecedor de Microsoft.Web recursos. Embora atualmente suportada, esta opção está planeada para futura descontinuação. Para novas cargas de trabalho, use antes a opção recomendada de alojamento de Aplicações Container.
Funções do Azure Você pode hospedar seus aplicativos de função em contêineres no Funções do Azure executando o contêiner em um plano Elastic Premium ou um Serviço de Aplicativo (Dedicado). A hospedagem de planos Premium oferece os benefícios do dimensionamento dinâmico. Talvez você queira usar a hospedagem de plano dedicado para aproveitar os recursos existentes do plano do Serviço de Aplicativo não utilizados.
Kubernetes Como o tempo de execução do Funções do Azure fornece flexibilidade na hospedagem onde e como você deseja, você pode hospedar e gerenciar seus contêineres de aplicativo de função diretamente em clusters do Kubernetes. O KEDA (Event Driven Autoscaling baseado em Kubernetes) combina perfeitamente com o tempo de execução e as ferramentas do Funções do Azure para fornecer escala orientada a eventos no Kubernetes. Importante: A hospedagem Kubernetes de seus aplicativos de função em contêineres, seja usando KEDA ou por implantação direta, é um esforço de código aberto que você pode usar gratuitamente. O suporte de melhor esforço para este cenário de hospedagem é fornecido apenas por colaboradores e pela comunidade. Você é responsável por manter seus próprios contêineres de aplicativo de função em um cluster, mesmo ao implantá-los no Serviço Kubernetes do Azure (AKS).

Comparação de suporte de funcionalidades

O grau em que vários recursos e comportamentos do Funções do Azure são suportados ao executar seu aplicativo de função em um contêiner depende da opção de hospedagem de contêiner escolhida.

Feature/behavior Aplicações de Contentores (recomendado) Aplicações de Contentores (legacy)1 Plano Premium Plano dedicado Kubernetes
Suporte ao produto Yes Yes Yes Yes No
Integração com portais de funções Yes No Yes Yes No
Dimensionamento controlado por eventos Sim (regras de escala) Yes5 Yes No No
Escala máxima (número de instâncias) 10002 10002 1003 10-304 Varia consoante o agrupamento
Instâncias com escala até zero Yes Yes No No KEDA
Limite de tempo de execução Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Implantação de ferramentas principais No No No No func kubernetes
Revisions Yes Yes No No No
Slots de implantação No No Yes Yes No
Logs de streaming Yes Yes Yes Yes No
Acesso à consola Yes Yes Sim (usando Kudu) Sim (usando Kudu) Sim (em cápsulas usando kubectl)
Mitigação do arranque a frio Regras de escala Mínimo de réplicas Instâncias pré-aquecidas/sempre prontas n/a n/a
Autenticação do Serviço de Aplicações Yes Yes Yes Yes No
Nomes de domínio personalizados Yes Yes Yes Yes No
Certificados de chave privada Yes Yes Yes Yes No
Redes virtuais Yes Yes Yes Yes Yes
Zonas de disponibilidade Yes Yes Yes Yes Yes
Diagnostics Yes Yes Yes Yes No
Hardware dedicado Sim (perfis de carga de trabalho) Sim (perfis de carga de trabalho) No Yes Yes
GPUs dedicadas Sim (perfis de carga de trabalho) Sim (perfis de carga de trabalho) No No Yes
Contagem configurável de memória/CPU Yes Yes No No Yes
Opção de "concessão gratuita" Yes Yes No No No
Detalhes dos preços Faturação para Aplicações de Contentores Faturação para Aplicações de Contentores Faturação do plano Premium Faturação de planos dedicados Preços AKS
Requisitos de nome de serviço 2-32 caracteres: limitado a letras minúsculas, números e hífenes. Deve começar com uma letra e terminar com um caractere alfanumérico. 2-32 caracteres: limitado a letras minúsculas, números e hífenes. Deve começar com uma letra e terminar com um caractere alfanumérico. Menos de 64 caracteres: limitado a caracteres alfanuméricos e hífenes. Não é possível começar com ou terminar com um hífen. Menos de 64 caracteres: limitado a caracteres alfanuméricos e hífenes. Não é possível começar com ou terminar com um hífen. Menos de 253 caracteres: limitado a caracteres alfanuméricos e hífenes. Deve começar e terminar com um caractere alfanumérico.
  1. Planeado para futura descrúcia. Em vez disso, use alojamento nativo de Aplicações Container.
  2. Em Aplicativos de Contêiner, o padrão é 10 instâncias, mas você pode definir o número máximo de réplicas, que tem um máximo geral de 1000. Essa configuração é respeitada desde que haja cota de núcleos suficiente disponível. Ao criar seu aplicativo de função a partir do portal do Azure, você está limitado a 300 instâncias.
  3. Em algumas regiões, os aplicativos Linux em um plano Premium podem ser dimensionados para 100 instâncias. Para obter mais informações, consulte o artigo do plano Premium.
  4. Para obter limites específicos para as várias opções do plano do Serviço de Aplicativo, consulte os limites do plano do Serviço de Aplicativo.
  5. O KEDA é necessário; suportado pela maioria dos ativadores. Para saber quais gatilhos oferecem suporte ao dimensionamento controlado por eventos, consulte Considerações sobre hospedagem de aplicativos de contêiner.
  6. Quando o número mínimo de réplicas é definido como zero, o tempo limite padrão depende dos gatilhos específicos usados no aplicativo.
  7. Não há uma duração máxima de tempo limite de execução imposta. No entanto, o período de carência dado à execução de uma função é de 60 minutos durante a redução de escala, e de 10 minutos durante as atualizações da plataforma.
  8. Requer que o plano do Serviço de Aplicativo esteja definido como Sempre Ativado. Um período de carência de 10 minutos é dado durante as atualizações da plataforma.

Manutenção de contêineres personalizados

Quando criares os teus próprios contentores, mantém a imagem base do contentor atualizada para a imagem base mais recente suportada. As imagens de base com suporte para o Funções do Azure são específicas do idioma e são encontradas nos repositórios de imagem base do Funções do Azure.

A equipa do Functions está empenhada em publicar atualizações mensais para estas imagens base. As atualizações regulares incluem as últimas atualizações de versões menores e correções de segurança para ambos o tempo de execução e os idiomas das Funções. Atualize regularmente o seu contentor a partir da imagem base mais recente e volte a colocar a versão atualizada do contentor.

Escolha sua imagem base com base na pilha de idiomas que você está usando em seu aplicativo de função. A tabela a seguir fornece exemplos para cada pilha. Em geral, a etiqueta começa com 4- para indicar o tempo de execução das Funções V4. Quando novas versões menores são lançadas, esta etiqueta é atualizada para apontar para a nova versão. À medida que reconstróis periodicamente a tua imagem personalizada, recolhes as novas versões através dessa mesma etiqueta, para que a tua aplicação tenha as mesmas atualizações. Não uses etiquetas que especifiquem versões menores em tempo de execução, pois estas etiquetas não recebem atualizações. A sua aplicação pode permanecer numa versão sem patches, independentemente de quantas vezes reconstrua a sua imagem personalizada.

Pilha de idiomas Exemplo de tags de imagem base recomendadas
.NET (modelo de trabalho isolado) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 ou
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(Estes exemplos destinam-se ao .NET 8. Selecione a imagem apropriada para a versão .NET que você precisa.)
.NET (modelo de processo interno herdado) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 ou
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(O suporte ao modelo em processo termina a 10 de novembro de 2026. Migrar para o modelo de trabalhador isolado o mais rapidamente possível.)
Java mcr.microsoft.com/azure-functions/java:4-java21 ou
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Estes exemplos destinam-se ao Java 21. Selecione a imagem apropriada para a versão Java que você precisa.)
Node.js (JavaScript ou TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 ou
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Estes exemplos visam Node.js 22. Selecione a imagem apropriada para a versão Node.js que você precisa.)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 ou
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Estes exemplos destinam-se ao PowerShell 7.4. Selecione a imagem apropriada para a versão do PowerShell de que você precisa.)
Python mcr.microsoft.com/azure-functions/python:4-python3.12 ou
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Estes exemplos destinam-se ao Python 3.12. Selecione a imagem apropriada para a versão Python que você precisa.)
Manipuladores personalizados / outros mcr.microsoft.com/azure-functions/base:4 ou
mcr.microsoft.com/azure-functions/base:4-appservice

Imagens de base que terminam em -appservice permitem o uso de SSH e depuração remota a partir da plataforma. A menos que precises destas capacidades, usa as imagens base sem o -appservice sufixo.

Important

Não basta ter apenas uma das etiquetas anteriores no seu Dockerfile. Você precisa extrair regularmente a imagem mais recente dessa tag para que sua imagem personalizada possa ser reconstruída para incluir as atualizações mais recentes. Se não puxares a imagem mais recente e não reconstruíres, a tua aplicação continua a correr na imagem base antiga.

Quando cria ou implementa a sua própria aplicação containerizada usando uma imagem personalizada, é responsável por garantir que a sua imagem personalizada se mantém up-todata com as imagens base lançadas. Além de novos recursos e melhorias, essas atualizações de imagem base também podem incluir atualizações de segurança que são críticas para seu aplicativo. Para garantir que a sua aplicação está protegida, certifique-se de que se mantém atualizado. Retira regularmente a versão mais recente da imagem base, reconstrói a tua imagem personalizada do contentor e reimplementa a tua aplicação para a usar.

Em alguns casos, a Microsoft é obrigada a fazer alterações ao nível da plataforma que podem significar que uma aplicação num contentor personalizado usando uma imagem base antiga pode deixar de funcionar corretamente. Para mudanças tão importantes, a Microsoft lança imagens atualizadas com bastante antecedência, para que as aplicações que recebem atualizações regulares não sejam afetadas negativamente. Para evitar possíveis problemas com as suas aplicações a correrem em contentores personalizados, certifique-se de que não fica demasiado atrasado relativamente à versão menor mais recente lançada. Durante um caso de suporte, se a Microsoft determinar que a sua aplicação está a apresentar problemas por estar numa versão mais antiga ou não suportada, a Microsoft pede que atualize o seu contentor para a versão mais recente da imagem base antes de continuar com o suporte.

Como Começar

Use estes links para começar a trabalhar com o Funções do Azure em contêineres do Linux:

Eu quero... Ver artigo:
Deploy functions to Azure Container Apps (recomendado) Crie suas primeiras funções em contêineres nos Aplicativos de Contêiner do Azure
Criar as minhas primeiras funções containerizadas localmente Criar um aplicativo de função em um contêiner Linux local
Implemente funções containerizadas num plano Premium ou Dedicado Crie seu primeiro Funções do Azure em contêiner