Ondersteuning voor Linux-containers in Azure Functions

Wanneer je je individuele functies plant en ontwikkelt om te draaien in Azure Functions, focus dan op de code zelf. Met Azure Functions kunt u eenvoudig alleen uw codeproject implementeren in een functie-app in Azure. Wanneer je je project deployt naar een Linux-functieapp, draait je code in een container die Azure Functions automatisch voor je aanmaakt. Deze container integreert naadloos met Functions-beheertools.

Functions ondersteunt ook implementaties van functie-apps in containers. In een containerized deployment maak je je eigen function app-instantie in een lokale Docker-container vanuit een ondersteunde basisimage. Vervolgens kunt u deze containerfunctie-app implementeren in een hostingomgeving in Azure. Door uw eigen functie-app-container te maken, kunt u de directe runtime-omgeving van uw functiecode aanpassen of op een andere manier beheren.

Important

Wanneer u uw eigen containers maakt, moet u de basisafbeelding van uw container bijwerken naar de meest recente ondersteunde basisafbeelding. Ondersteunde basisinstallatiekopieën voor Azure Functions zijn taalspecifiek. Zie de basisimage-repositories van Azure Functions.

Het Functions-team zet zich in voor het publiceren van maandelijkse updates voor deze basisbeelden. Regelmatige updates bevatten de meest recente secundaire versie-updates en beveiligingscorrecties voor zowel de Functions-runtime als de talen. Werk uw container regelmatig bij vanaf de meest recente basisinstallatiekopie en implementeer de bijgewerkte versie van uw container opnieuw. Zie Aangepaste containers onderhouden voor meer informatie.

Opties voor containerhosting

Tip

Voor de meeste containerized workloads host je je functie-apps in Azure Container Apps. Container Apps biedt een volledig beheerde, serverloze Kubernetes-gebaseerde omgeving met ingebouwde event-driven scaling, schaal-tot-nul en GPU-ondersteuning. Om te beginnen, zie Azure Functions op Azure Container Apps.

Je hebt verschillende opties om je containerized function apps in Azure te hosten:

Hostingoptie Benefits
Azure Container Apps (Aanbevolen) Azure Container Apps host en beheert je functionele app-containers native via de Microsoft.App resource provider. Voer je functies uit in een volledig beheerde, serverless Kubernetes-gebaseerde omgeving met ingebouwde ondersteuning voor open-source monitoring, mTLS, Dapr en KEDA. Ondersteunt schaal-tot-nul, serverless pay-for-what-you-use facturering, dedicated hardware en GPU's via workloadprofielen. Je profiteert van hetzelfde Functions-programmeermodel en triggers terwijl je de volledige functionaliteit van Container Apps krijgt. Aanbevolen hostingoptie voor containerized function apps in Azure.
Azure Container Apps (legacy) Azure Functions biedt geïntegreerde ondersteuning voor het uitrollen van gecontaineriseerde functie-apps in een Container Apps-omgeving via de Microsoft.Web resource provider. Hoewel deze optie momenteel wordt ondersteund, is deze optie gepland voor toekomstige uitschrappen. Voor nieuwe workloads kun je in plaats daarvan de aanbevolen optie Container Apps hosting gebruiken.
Azure Functions U kunt uw in containers geplaatste functie-apps hosten in Azure Functions door de container uit te voeren in een Elastic Premium- of Een App Service-abonnement (Dedicated). Hosting van Premium-abonnementen biedt u de voordelen van dynamisch schalen. U kunt overwegen een dedicated hostingplan te gebruiken om te profiteren van de bestaande, ongebruikte middelen van het App Service-plan.
Kubernetes Omdat de Azure Functions-runtime flexibiliteit biedt bij het hosten van waar en hoe u wilt, kunt u uw functie-app-containers rechtstreeks in Kubernetes-clusters hosten en beheren. KEDA (Op Kubernetes gebaseerde gebeurtenisgestuurde automatische schaalaanpassing) paren naadloos met de Azure Functions-runtime en hulpprogramma's om gebeurtenisgestuurde schaal in Kubernetes te bieden. Belangrijk: Kubernetes die als host fungeert voor uw functie-apps in containers, hetzij met behulp van KEDA of door directe implementatie, is een opensource-inspanning die u gratis kunt gebruiken. Ondersteuning voor best effort voor dit hostingscenario wordt alleen aangeboden door inzenders en door de community. U bent verantwoordelijk voor het onderhouden van uw eigen functie-app-containers in een cluster, zelfs wanneer u ze implementeert in Azure Kubernetes Service (AKS).

Vergelijking van functieondersteuning

De mate waarin verschillende functies en gedragingen van Azure Functions worden ondersteund bij het uitvoeren van uw functie-app in een container, is afhankelijk van de optie voor het hosten van containers die u kiest.

Feature/behavior Container Apps (aanbevolen) Container Apps (legacy)1 Premium-abonnement Toegewezen abonnement Kubernetes
Productondersteuning Yes Yes Yes Yes No
Integratie van functieportaal Yes No Yes Yes No
Gebeurtenisgestuurd schalen Ja (schaalregels) Yes5 Yes No No
Maximale schaal (instanties) 10002 10002 1003 10-304 Verschilt per cluster
Instanties schalen tot nul Yes Yes No No KEDA
Uitvoeringstijdlimiet Unbounded6 Unbounded6 Unbounded7 Unbounded8 Geen
Core Tools-implementatie No No No No func kubernetes
Revisions Yes Yes No No No
Implementatiesites No No Yes Yes No
Streaming-logboeken Yes Yes Yes Yes No
Consoletoegang Yes Yes Ja (met Kudu) Ja (met Kudu) Ja (in pods met behulp van kubectl)
Beperking van koude start Schaalregels Minimale replica's Altijd gereed/vooraf opgewarmde exemplaren n/a n/a
App Service-verificatie Yes Yes Yes Yes No
Aangepaste domeinnamen Yes Yes Yes Yes No
Certificaten voor persoonlijke sleutels Yes Yes Yes Yes No
Virtuele netwerken Yes Yes Yes Yes Yes
Beschikbaarheidszones Yes Yes Yes Yes Yes
Diagnostics Yes Yes Yes Yes No
Toegewezen hardware Ja (workloadprofielen) Ja (workloadprofielen) No Yes Yes
Toegewezen GPU's Ja (workloadprofielen) Ja (workloadprofielen) No No Yes
Configureerbaar geheugen/CPU-aantal Yes Yes No No Yes
"Gratis subsidie" optie Yes Yes No No No
Prijsinformatie Facturering voor Container Apps Facturering voor Container Apps Facturering van Premium-abonnement Facturering van specifieke plannen AKS-prijzen
Vereisten voor servicenaam 2-32 tekens: beperkt tot kleine letters, cijfers en afbreekstreepjes. Moet beginnen met een letter en eindigen met een alfanumerieke teken. 2-32 tekens: beperkt tot kleine letters, cijfers en afbreekstreepjes. Moet beginnen met een letter en eindigen met een alfanumerieke teken. Minder dan 64 tekens: beperkt tot alfanumerieke tekens en afbreekstreepjes. Kan niet beginnen met of eindigen op een streepje. Minder dan 64 tekens: beperkt tot alfanumerieke tekens en afbreekstreepjes. Kan niet beginnen met of eindigen op een streepje. Minder dan 253 tekens: beperkt tot alfanumerieke tekens en afbreekstreepjes. Moet beginnen en eindigen met een alfanumerieke teken.
  1. Gepland voor toekomstige afschrijving. Gebruik in plaats daarvan native Container Apps hosting.
  2. In Container Apps is de standaardwaarde 10 exemplaren, maar u kunt het maximum aantal replica's instellen, met een totaal maximum van 1000. Deze instelling wordt gehonoreerd zolang er voldoende kernquotum beschikbaar is. Wanneer u uw functie-app maakt vanuit Azure Portal, bent u beperkt tot 300 exemplaren.
  3. In sommige regio's kunnen Linux-apps op een Premium-abonnement worden geschaald naar 100 exemplaren. Zie het artikel over het Premium-abonnement voor meer informatie.
  4. Zie de App Service-planlimieten voor specifieke limieten voor de verschillende opties van het App Service-plan.
  5. Vereist KEDA; ondersteund door de meeste triggers. Zie Overwegingen voor het hosten van Container Apps voor informatie over welke triggers ondersteuning bieden voor gebeurtenisgestuurd schalen.
  6. Wanneer het minimale aantal replica's is ingesteld op nul, is de standaardtime-out afhankelijk van de specifieke triggers die in de app worden gebruikt.
  7. Er is geen maximale time-outduur voor uitvoering afgedwongen. De respijtperiode die aan een functie-uitvoering wordt gegeven, is echter 60 minuten tijdens het inschalen en er wordt een respijtperiode van 10 minuten gegeven tijdens platformupdates.
  8. Vereist dat het App Service-plan is ingesteld op AlwaysOn. Tijdens platformupdates wordt er een respijtperiode van 10 minuten gegeven.

Aangepaste containers onderhouden

Wanneer je je eigen containers maakt, houd dan de basisimage van je container bijgewerkt naar de nieuwste ondersteunde basisimage. Ondersteunde basisafbeeldingen voor Azure Functions zijn taalspecifiek en bevinden zich in de basisafbeeldingsopslagplaatsen van Azure Functions.

Het Functions-team zet zich in voor het publiceren van maandelijkse updates voor deze basisbeelden. Regelmatige updates bevatten de meest recente secundaire versie-updates en beveiligingscorrecties voor zowel de Functions-runtime als de talen. Werk je container regelmatig bij vanaf de nieuwste basisimage en deploy de bijgewerkte versie van je container opnieuw.

Kies uw basisimage op basis van de taalstack die u gebruikt in uw function app. De volgende tabel bevat voorbeelden voor elke stack. In het algemeen begint de tag met 4- om de runtime van V4 Functions aan te geven. Wanneer er nieuwe kleine versies worden uitgebracht, wordt deze tag bijgewerkt om naar de nieuwe versie te verwijzen. Terwijl je je aangepaste image periodiek opnieuw opbouwt, haal je de nieuwe versies door diezelfde tag, zodat je app dezelfde updates krijgt. Gebruik geen tags die kleine runtime-versies specificeren, want deze tags krijgen geen updates. Je app blijft mogelijk op een niet-gepatchte versie, hoe vaak je je aangepaste image ook opnieuw opbouwt.

Taalstack Voorbeeld van aanbevolen basisafbeeldingstags
.NET (geïsoleerd werkmodel) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 of
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(Deze voorbeelden zijn gericht op .NET 8. Selecteer de juiste installatiekopieën voor de .NET-versie die u nodig hebt.)
.NET (verouderd in-procesmodel) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 of
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(De ondersteuning voor het in-procesmodel eindigt op 10 november 2026. Ga zo snel mogelijk over naar het model van geïsoleerde werknemers .)
Java mcr.microsoft.com/azure-functions/java:4-java21 of
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Deze voorbeelden zijn gericht op Java 21. Selecteer de juiste installatiekopieën voor de Java-versie die u nodig hebt.)
Node.js (JavaScript of TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 of
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Deze voorbeelden zijn voor Node.js 22. Selecteer de juiste afbeelding van de Node.js versie die u nodig hebt.)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 of
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Deze voorbeelden zijn bedoeld voor PowerShell 7.4. Selecteer de juiste installatiekopieën voor de PowerShell-versie die u nodig hebt.)
Python mcr.microsoft.com/azure-functions/python:4-python3.12 of
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Deze voorbeelden zijn bedoeld voor Python 3.12. Selecteer de juiste afbeelding voor de Python-versie die u nodig hebt.)
Aangepaste handlers/andere mcr.microsoft.com/azure-functions/base:4 of
mcr.microsoft.com/azure-functions/base:4-appservice

Basisafbeeldingen die eindigen op -appservice maken het mogelijk om SSH en externe debugging vanaf het platform in te schakelen. Tenzij je deze mogelijkheden nodig hebt, gebruik dan de basisafbeeldingen zonder het -appservice achtervoegsel.

Important

Het is niet voldoende om alleen één van de voorgaande tags in je Dockerfile te hebben. U moet regelmatig de meest recente image uit die tag ophalen, zodat uw aangepaste image opnieuw kan worden opgebouwd en de nieuwste updates kan bevatten. Als je de nieuwste image niet ophaalt en opnieuw opbouwt, blijft je app draaien op de oude basisimage.

Wanneer je je eigen containerized app maakt of deployt met een aangepaste image, ben je verantwoordelijk voor het zorgen dat je custom image up-to-date blijft met de uitgebrachte basisimages. Naast nieuwe functies en verbeteringen kunnen deze updates voor basisinstallatiekopieën ook beveiligingsupdates bevatten die essentieel zijn voor uw app. Zorg ervoor dat u up-to-date blijft om ervoor te zorgen dat uw app is beveiligd. Haal regelmatig de nieuwste versie van de basisimage op, bouw je aangepaste containerimage opnieuw op en deploy je app opnieuw om deze te gebruiken.

In sommige gevallen moet Microsoft platformniveauwijzigingen doorvoeren die kunnen betekenen dat een app in een aangepaste container met een oude basisimage niet meer goed werkt. Voor zulke grote veranderingen rolt Microsoft geüpdatete afbeeldingen ruim van tevoren uit, zodat apps die regelmatig updates krijgen niet negatief worden beïnvloed. Als u potentiële problemen wilt voorkomen met uw apps die worden uitgevoerd in aangepaste containers, moet u ervoor zorgen dat u niet te ver achterloopt op de meest recente secundaire versie die is uitgebracht. Tijdens een supportzaak, als Microsoft vaststelt dat je app problemen ondervindt omdat deze op een oudere of niet-ondersteunde versie staat, vraagt Microsoft je om je container bij te werken naar de nieuwste basisimageversie voordat je verder gaat met de ondersteuning.

Aan de slag

Gebruik deze koppelingen om aan de slag te gaan met Azure Functions in Linux-containers:

Ik wil... Zie het artikel:
Rol functies uit naar Azure Container Apps (aanbevolen) Uw eerste containerfuncties maken in Azure Container Apps
Mijn eerste containerized functies lokaal maken Een functie-app maken in een lokale Linux-container
Zet containerized functies uit op een Premium- of Dedicated plan Uw eerste in een container geplaatste Azure Functions maken