Compartilhar via


Suporte a contêineres do Linux no Azure Functions

Ao planejar e desenvolver suas funções individuais para execução no Azure Functions, você normalmente está focado no próprio código. O Azure Functions facilita a implantação apenas do seu projeto de código em um aplicativo de funções no Azure. Quando você implanta seu projeto em um aplicativo de funções do Linux, seu código é executado em um contêiner que é criado para você automaticamente e integra-se perfeitamente às ferramentas de gerenciamento do Functions.

O Functions também dá suporte a implantações de aplicativo de funções em contêineres. Em uma implantação em contêineres, você cria sua própria instância de aplicativo de funções em um contêiner local do Docker a partir de uma imagem baseada com suporte. Em seguida, você pode implantar esse aplicativo de funções em contêineres em um ambiente de hospedagem no Azure. Criar seu próprio contêiner do aplicativo de funções permite personalizar ou controlar o ambiente de runtime imediato do código de função.

Important

Ao criar seus próprios contêineres, você precisará manter a imagem base do contêiner atualizada para a imagem base com suporte mais recente. As imagens base com suporte para o Azure Functions são específicas do idioma. Consulte os repositórios de imagem base do Azure Functions.

A equipe do Functions está comprometida em publicar atualizações mensais para essas imagens base. As atualizações regulares incluem as atualizações de versão secundária mais recentes e as correções de segurança para o runtime e os idiomas do Functions. Você deve atualizar regularmente o seu contêiner da imagem base mais recente e reimplantar a versão atualizada do seu contêiner. Para obter mais informações, consulte Manter contêineres personalizados.

Opções de hospedagem de contêiner

Há várias opções para hospedar seus aplicativos de funções em contêineres no Azure:

Opção de hospedagem Benefits
Aplicativos de Contêiner do Azure O Azure Functions fornece suporte integrado para desenvolver, implantar e gerenciar aplicativos de funções conteinerizadas nos Aplicativos de Contêiner do Azure. Essa integração permite que você gerencie seus aplicativos usando as mesmas ferramentas e páginas do Functions no portal do Azure. Use os Aplicativos de Contêiner do Azure para hospedar o contêiner do aplicativo de funções no mesmo ambiente que outros microsserviços, APIs, sites, fluxos de trabalho ou outros programas hospedados em contêiner. A hospedagem de Aplicativos de Contêiner permite que você execute suas funções em um ambiente baseado em Kubernetes gerenciado com suporte interno para monitoramento de código aberto, mTLS, Dapr e KEDA. Dá suporte à escala para zero e fornece um modelo de hospedagem de pagamento sem servidor para o que você usa. Você também pode solicitar hardware dedicado, até mesmo GPUs, usando perfis de carga de trabalho. Opção de hospedagem recomendada para aplicativos de funções em contêineres no Azure.
Clusters do Kubernetes habilitados para Azure Arc (versão prévia) Você pode hospedar seus aplicativos de funções em clusters do Kubernetes habilitados para Azure Arc como uma implantação somente código ou em um contêiner do Linux personalizado. O Azure Arc permite anexar clusters do Kubernetes para que você possa gerenciá-los e configurá-los no Azure. A hospedagem dos contêineres do Azure Functions em clusters do Kubernetes habilitados para Azure Arc está atualmente em versão prévia. Para obter mais informações, consulte Trabalhar com contêineres e Azure Functions.
Azure Functions Você pode hospedar seus aplicativos de funções em contêineres no Azure Functions executando o contêiner em um plano Elástico Premium ou um Serviço de Aplicativo (Dedicado ). Utilize a hospedagem de Container Apps para oferecer suporte rico a contêineres de Container Apps. A hospedagem de plano Premium oferece os benefícios da escala dinâmica. Talvez você queira usar a hospedagem de plano dedicado para aproveitar os recursos existentes do Plano do Serviço de Aplicativo não utilizado.
Kubernetes Como o runtime do Azure Functions fornece flexibilidade na hospedagem onde e como você deseja, você pode hospedar e gerenciar os contêineres do aplicativo de funções diretamente em clusters do Kubernetes. O KEDA (dimensionamento automático baseado em eventos baseado em Kubernetes) é emparelhado perfeitamente com o runtime e as ferramentas do Azure Functions para fornecer escala controlada por eventos no Kubernetes. Importante: A hospedagem do Kubernetes de seus aplicativos de funções em contêineres, usando KEDA ou por implantação direta, é um esforço de software livre que você pode usar gratuitamente. O suporte de melhor esforço para esse 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ções em um cluster, mesmo ao implantá-los no AKS (Serviço de Kubernetes do Azure).

Comparação de suporte a recursos

O nível de suporte a vários recursos e comportamentos do Azure Functions ao executar seu aplicativo de funções em um contêiner depende da opção de hospedagem de contêiner escolhida.

Feature/behavior Aplicativos de Contêiner (integrado) Aplicativos de Contêiner (direto) Plano Premium Plano dedicado Kubernetes
Suporte ao produto Yes No Yes Yes No
Integração do portal do Functions No No Yes Yes No
Dimensionamento controlado por eventos Yes5 Sim (regras de escala) Yes No No
Escala máxima (instâncias) 10001  10001  1002  10-303  Varia de acordo com o cluster
Instâncias de escala para zero Yes Yes No No KEDA
Limite de tempo de execução Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Implantação do Core Tools 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 ao console  Yes  Yes Sim (usando o Kudu) Sim (usando o Kudu) Sim (em pods usando kubectl)
Mitigação de inicialização a frio Réplicas mínimas Regras de escala  Instâncias sempre disponíveis/pré-aquecidas  n/a n/a
Autenticação do Serviço de Aplicativo  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
Memória configurável/contagem de CPU Yes Yes No No Yes
Opção “Concessão gratuita” Yes Yes No No No
Detalhes de preço Cobrança dos Aplicativos de Contêiner Cobrança dos Aplicativos de Contêiner Cobrança do plano Premium Cobrança do plano dedicado Preços do AKS
Requisitos do nome de serviço 2 a 32 caracteres: limitado a letras minúsculas, números e hifens. Deve começar com uma letra e terminar com um caractere alfanumérico. 2 a 32 caracteres: limitado a letras minúsculas, números e hifens. Deve começar com uma letra e terminar com um caractere alfanumérico. Menos de 64 caracteres: limitado a caracteres alfanuméricos e hifens. Não pode começar ou terminar com um hífen. Menos de 64 caracteres: limitado a caracteres alfanuméricos e hifens. Não pode começar ou terminar com um hífen. Menos de 253 caracteres: limitado a caracteres alfanuméricos e hifens. Deve começar e terminar com um caractere alfanumérico.
  1. 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ções no portal do Azure, você está limitado a 300 instâncias.
  2. Em algumas regiões, os aplicativos Linux em um plano Premium podem ser escalados para 100 instâncias. Para mais informações, confira o artigo do plano Premium.
  3. Para obter limites específicos para as várias opções de plano do Serviço de Aplicativo, confira os limites do plano do Serviço de Aplicativo.
  4. Requer KEDA; compatível com a maioria dos gatilhos. Para saber quais gatilhos dão suporte à escala orientada por eventos, consulte Considerações para hospedagem dos Aplicativos de Contêiner.
  5. Quando o número mínimo de réplicas for definido como zero, o tempo limite padrão dependerá dos gatilhos específicos usados no aplicativo.
  6. Não há duração máxima de tempo limite de execução imposta. No entanto, o período de cortesia dado a uma execução de função é de 60 minutos durante a redução horizontal e um período de cortesia de 10 minutos é dado durante as atualizações de plataforma.
  7. Exige que o plano do Serviço de Aplicativo seja definido como Always On. Um período de cortesia de 10 minutos é dado durante as atualizações da plataforma.

Manutenção de contêineres personalizados

Ao criar seus próprios contêineres, você precisará manter a imagem base do contêiner atualizada para a imagem base com suporte mais recente. As imagens base com suporte para o Azure Functions são específicas a uma linguagem e encontradas nos repositórios de imagem base do Azure Functions.

A equipe do Functions está comprometida em publicar atualizações mensais para essas imagens base. As atualizações regulares incluem as atualizações de versão secundária mais recentes e as correções de segurança para o runtime e os idiomas do Functions. Você deve atualizar regularmente o seu contêiner da imagem base mais recente e reimplantar a versão atualizada do seu contêiner.

Escolha sua imagem base com base na pilha de idiomas que você está usando em seu aplicativo de funções. A tabela a seguir fornece exemplos para cada conjunto. Em geral, a tag deve começar com 4- para indicar o runtime do V4 Functions. Quando novas versões secundárias forem lançadas, essa marca será atualizada para apontar para a nova versão. À medida que você recompila periodicamente sua imagem personalizada, você extrairá as novas versões usando essa mesma tag, permitindo que seu aplicativo receba as mesmas atualizações. Você não deve usar marcas que especifiquem versões de runtime menores, pois elas não receberão atualizações, e seu aplicativo provavelmente permanecerá em uma versão não corrigida, independentemente da frequência com que você recompilar 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 têm como destino o .NET 8. Selecione a imagem apropriada para a versão do .NET necessária.)
.NET (modelo herdado de processo interno) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 ou
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(O suporte terminará para o modelo em processo em 10 de novembro de 2026. Você deve migrar para o modelo de trabalho isolado assim que possível.)
Java mcr.microsoft.com/azure-functions/java:4-java21 ou
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Esses exemplos têm como destino o Java 21. Selecione a imagem apropriada para a versão java de 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

(Esses exemplos têm como destino Node.js 22. Selecione a imagem apropriada para a versão Node.js necessária.)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 ou
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Estes exemplos têm como destino o PowerShell 7.4. Selecione a imagem apropriada para a versão do PowerShell necessária.)
Python mcr.microsoft.com/azure-functions/python:4-python3.12 ou
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Estes exemplos têm como destino o Python 3.12. Selecione a imagem apropriada para a versão do Python de que você precisa.)
Manipuladores personalizados / outros mcr.microsoft.com/azure-functions/base:4 ou
mcr.microsoft.com/azure-functions/base:4-appservice

Imagens base que terminam em -appservice habilitam o SSH e a depuração remota pela plataforma. A menos que você precise dessas funcionalidades, poderá usar as imagens base sem o -appservice sufixo.

Important

Não é suficiente ter apenas uma das tags acima no Dockerfile. Você precisa extrair regularmente a imagem mais recente desse tag para que sua imagem personalizada possa ser recriada para incluir as atualizações mais recentes. Se você não baixar a imagem mais recente e recompilar, seu aplicativo continuará rodando na imagem antiga.

Ao criar ou implantar seu próprio aplicativo em contêineres usando uma imagem personalizada, você será responsável por garantir que sua imagem personalizada fique atualizada com nossas 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 essenciais para seu aplicativo. Para garantir que seu aplicativo esteja protegido, verifique se você está atualizado. Você deve regularmente puxar a imagem base mais recente, reconstruir sua imagem de contêiner personalizada e redisponibilizar seu aplicativo para utilizá-la.

Em alguns casos, é necessário fazer alterações no nível da plataforma que possam significar que um aplicativo em um contêiner personalizado usando uma imagem base antiga pode parar de funcionar corretamente. Para essas alterações importantes, distribuimos imagens atualizadas com bastante antecedência para que os aplicativos que fazem atualizações regulares não sejam afetados negativamente. Para evitar possíveis problemas com seus aplicativos em execução em contêineres personalizados, verifique se você não está muito atrás da versão secundária mais recente lançada. Durante um caso de suporte, devemos determinar que seu aplicativo está enfrentando problemas porque ele está em uma versão mais antiga ou sem suporte, solicitamos que você atualize seu contêiner 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 Azure Functions em contêineres do Linux:

Eu desejo... Consulte o artigo:
Criar minhas primeiras funções em contêineres Criar um aplicativo de funções em um contêiner local do Linux
Criar e implantar funções em Aplicativos de Contêiner do Azure Criar suas primeiras funções em contêineres nos Aplicativos de Contêiner do Azure
Criar e implantar funções em contêineres no Azure Functions Criar seu primeiro Azure Functions em contêineres