Dela via


Stöd för Linux-container i Azure Functions

När du planerar och utvecklar dina enskilda funktioner som ska köras i Azure Functions fokuserar du vanligtvis på själva koden. Azure Functions gör det enkelt att bara distribuera kodprojektet till en funktionsapp i Azure. När du distribuerar projektet till en Linux-funktionsapp körs koden i en container som skapas automatiskt och sömlöst integreras med Functions-hanteringsverktyg.

Functions stöder även distribution av containerbaserade funktionsappar. I en containeriserad distribution skapar du en egen funktionsappinstans i en lokal Docker-container från en stödd basavbild. Du kan sedan distribuera den här containerbaserade funktionsappen till en värdmiljö i Azure. Genom att skapa en egen container för funktionsappen kan du anpassa eller på annat sätt styra den omedelbara körningsmiljön för din funktionskod.

Important

När du skapar egna containrar måste du hålla basavbildningen av containern uppdaterad till den senaste basavbildningen som stöds. Basavbildningar som stöds för Azure Functions är språkspecifika. Se Lagringsplatser för Azure Functions-basavbildningar.

Functions-teamet har åtagit sig att publicera månatliga uppdateringar för dessa basavbildningar. Regelbundna uppdateringar omfattar de senaste delversionsuppdateringarna och säkerhetskorrigeringarna för både Functions-körningen och språken. Du bör regelbundet uppdatera containern från den senaste basavbildningen och distribuera om den uppdaterade versionen av containern. För mer information, se Underhåll av anpassade containrar.

Hostingsalternativ för containrar

Det finns flera alternativ för att vara värd för dina containerbaserade funktionsappar i Azure:

Hostingalternativ Benefits
Azure Container Apps Azure Functions ger integrerat stöd för att utveckla, distribuera och hantera containerbaserade funktionsappar i Azure Container Apps. Med den här integreringen kan du hantera dina appar med samma Functions-verktyg och -sidor i Azure-portalen. Använd Azure Container Apps som värd för din funktionsappcontainer i samma miljö som andra mikrotjänster, API:er, webbplatser, arbetsflöden eller andra värdbaserade containerprogram. Med värdtjänster för Container Apps kan du köra dina funktioner i en automatiserad Kubernetes-baserad miljö med mycket inbyggt stöd för övervakning med öppen källkod, mTLS, Dapr och KEDA. Stöder skalning till noll och tillhandahåller en serverlös värdmodell för att betala för vad du använder. Du kan också begära dedikerad maskinvara, även GPU:er, med hjälp av arbetsbelastningsprofiler. Rekommenderat värdalternativ för containerbaserade funktionsappar n Azure.
Azure Arc-aktiverade Kubernetes-kluster (förhandsversion) Du kan vara värd för dina funktionsappar i Azure Arc-aktiverade Kubernetes-kluster som antingen en kodbaserad distribution eller i en anpassad Linux-container. Med Azure Arc kan du koppla Kubernetes-kluster så att du kan hantera och konfigurera dem i Azure. Att värda Azure Functions-containrar i Azure Arc-aktiverade Kubernetes-kluster är för närvarande i förhandsvisning. Mer information finns i Arbeta med containrar och Azure Functions.
Azure Functions Du kan vara värd för dina containerbaserade funktionsappar i Azure Functions genom att köra containern i en Elastic Premium- eller apptjänstplan (dedikerad). Använd Container Apps som värd för omfattande containerstöd från Container Apps. Premium-planvärdar ger dig fördelarna med dynamisk skalning. Du kanske vill använda en dedikerad hostingplan för att dra nytta av befintliga oanvända resurser i App Service-planen.
Kubernetes Eftersom Azure Functions-körningen ger flexibilitet när det gäller att vara värd för var och hur du vill kan du vara värd för och hantera dina funktionsappcontainrar direkt i Kubernetes-kluster. KEDA (Kubernetes-baserad händelsedriven autoskalning) parar sömlöst med Azure Functions-körningen och verktygen för att tillhandahålla händelsedriven skalning i Kubernetes. Viktig: Kubernetes-värdtjänster för dina containerbaserade funktionsappar, antingen med hjälp av KEDA eller direktdistribution, är ett arbete med öppen källkod som du kan använda utan kostnad. Bästa möjliga stöd för det här värdscenariot tillhandahålls endast av deltagare och av communityn. Du ansvarar för att underhålla dina egna funktionsappcontainrar i ett kluster, även när du distribuerar dem till Azure Kubernetes Service (AKS).

Jämförelse av funktionsstöd

I vilken utsträckning olika funktioner och beteenden i Azure Functions stöds när du kör funktionsappen i en container beror på vilket värdalternativ för containrar du väljer.

Feature/behavior Container Apps (integrerade) Container Apps (direkt) Premium-plan Dedikerad plan Kubernetes
Produktsupport Yes No Yes Yes No
Integrering av Functions-portalen No No Yes Yes No
Händelsedriven skalbarhet Yes5 Ja (skala regler) Yes No No
Maximal skala (instanser) 10001  10001  1002  10-303  Varierar beroende på kluster
Instanser som skalas till noll Yes Yes No No KEDA
Tidsgräns för körning Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Distribuering av Kärnverktyg No No No No func kubernetes 
Revisions Yes  Yes No No No
Implementeringsplatser  No No Yes Yes No
Strömningsloggar  Yes  Yes  Yes Yes No
Konsolåtkomst  Yes  Yes Ja (med Kudu) Ja (med Kudu) Ja (i poddar med användning avkubectl)
Minskning av kallstart Minsta antal repliker Skaleringsregler  Alltid redo/förvärmda instanser  n/a n/a
App Service-autentisering  Yes  Yes Yes Yes No
Egna domännamn  Yes  Yes Yes Yes No
Certifikat för privat nyckel  Yes  Yes Yes Yes No
Virtuella nätverk Yes  Yes Yes Yes Yes
Tillgänglighetszoner Yes  Yes Yes Yes Yes
Diagnostics Yes  Yes Yes  Yes  No
Dedikerad maskinvara Ja (arbetsbelastningsprofiler) Ja (arbetsbelastningsprofiler) No Yes Yes
Dedikerade GPU:er Ja (arbetsbelastningsprofiler) Ja (arbetsbelastningsprofiler) No No Yes
Konfigurerbart minne/CPU-antal Yes Yes No No Yes
Alternativet "Gratis bidrag" Yes Yes No No No
Prisinformation Container Apps-fakturering Container Apps-fakturering Fakturering av Premium-plan Fakturering av dedikerad tjänst AKS-priser
Krav för tjänstnamn 2–32 tecken: begränsat till små bokstäver, siffror och bindestreck. Måste börja med en bokstav och sluta med ett alfanumeriskt tecken. 2–32 tecken: begränsat till små bokstäver, siffror och bindestreck. Måste börja med en bokstav och sluta med ett alfanumeriskt tecken. Färre än 64 tecken: begränsat till alfanumeriska tecken och bindestreck. Det går inte att börja med eller sluta med ett bindestreck. Färre än 64 tecken: begränsat till alfanumeriska tecken och bindestreck. Det går inte att börja med eller sluta med ett bindestreck. Färre än 253 tecken: begränsat till alfanumeriska tecken och bindestreck. Måste börja och sluta med ett alfanumeriskt tecken.
  1. I Container Apps är standardvärdet 10 instanser, men du kan ange det maximala antalet repliker, som totalt har högst 1 000. Den här inställningen respekteras så länge det finns tillräckligt med kvot av tillgängliga kärnor. När du skapar din funktionsapp från Azure Portal är du begränsad till 300 instanser.
  2. I vissa regioner kan Linux-appar på en Premium-plan skalas till 100 instanser. Mer information finns i artikeln premiumplan.
  3. Specifika gränser för de olika App Service-planalternativen finns i Gränserna för App Service-planen.
  4. Kräver KEDA, som stöds av de flesta utlösare. Information om vilka utlösare som stöder händelsedriven skalning finns i Överväganden för värdtjänster för Container Apps.
  5. När det minsta antalet repliker är inställt på noll beror standardtimeouten på de specifika utlösare som används i appen.
  6. Det finns ingen tillämpad maximal tidsgräns för körning. Respitperioden som ges till en funktionskörning är dock 60 minuter under inskalning och en respitperiod på 10 minuter ges under plattformsuppdateringar.
  7. Kräver att App Service-planen är inställd på AlwaysOn. En respitperiod på 10 minuter ges under plattformsuppdateringar.

Underhålla anpassade containrar

När du skapar egna containrar måste du hålla basavbildningen av containern uppdaterad till den senaste basavbildningen som stöds. Basavbildningar som stöds för Azure Functions är språkspecifika och finns i basavbildningslagringarna för Azure Functions.

Functions-teamet har åtagit sig att publicera månatliga uppdateringar för dessa basavbildningar. Regelbundna uppdateringar omfattar de senaste delversionsuppdateringarna och säkerhetskorrigeringarna för både Functions-körningen och språken. Du bör regelbundet uppdatera containern från den senaste basavbildningen och distribuera om den uppdaterade versionen av containern.

Välj basavbildningen baserat på språkstacken som du använder i funktionsappen. Följande tabell innehåller exempel för varje stack. I allmänhet bör taggen börja med 4- för att indikera V4 Functions-körmiljön. När nya delversioner släpps uppdateras den här taggen så att den pekar på den nya versionen. När du regelbundet återskapar din anpassade avbildning hämtar du de nya versionerna via samma tagg, så att appen kan ha samma uppdateringar. Du bör inte använda taggar som anger mindre körningsversioner, eftersom dessa inte får uppdateringar, och din app kan finnas kvar i en icke-konstruerad version, oavsett hur ofta du återskapar din anpassade avbildning.

Språkstacken Exempel på rekommenderade basavbildningstaggar
.NET (isolerad arbetsmodell) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 eller
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(De här exemplen riktar sig mot .NET 8. Välj lämplig avbildning för den .NET-version du behöver.)
.NET (äldre processmodell) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 eller
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(Supporten upphör för in-process-modellen den 10 november 2026. Du bör migrera till den isolerade arbetsmodellen så snart som möjligt.)
Java mcr.microsoft.com/azure-functions/java:4-java21 eller
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(De här exemplen riktar sig mot Java 21. Välj lämplig avbildning för den Java-version du behöver.)
Node.js (JavaScript eller TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 eller
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Dessa exempel är inriktade på Node.js 22. Välj den lämpliga bilden för den Node.js-version du behöver.)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 eller
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(De här exemplen riktar sig mot PowerShell 7.4. Välj lämplig avbildning för den PowerShell-version du behöver.)
python mcr.microsoft.com/azure-functions/python:4-python3.12 eller
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(De här exemplen riktar sig mot Python 3.12. Välj lämplig avbildning för den Python-version du behöver.)
Anpassade hanterare och annat mcr.microsoft.com/azure-functions/base:4 eller
mcr.microsoft.com/azure-functions/base:4-appservice

Basavbildningar som slutar med -appservice aktivera SSH och fjärrfelsökning från plattformen. Om du inte behöver de här funktionerna kan du använda basavbildningarna utan suffixet -appservice .

Important

Det räcker inte att bara ha en av ovanstående taggar i Din Dockerfile. Du måste regelbundet hämta den senaste avbildningen från taggen så att din anpassade avbildning kan återskapas så att den innehåller de senaste uppdateringarna. Om du inte hämtar den senaste avbildningen och återskapar den fortsätter appen att köras på den gamla basavbildningen.

När du skapar eller distribuerar en egen containerbaserad app med en anpassad avbildning är du ansvarig för att se till att din anpassade avbildning förblir up-to-date med våra utgivna basavbildningar. Förutom nya funktioner och förbättringar kan dessa basavbildningsuppdateringar även innehålla säkerhetsuppdateringar som är viktiga för din app. Kontrollera att appen är skyddad genom att hålla dig uppdaterad. Du bör regelbundet hämta den senaste versionen av basavbildningen, återskapa din anpassade containeravbildning och distribuera om appen så att den används.

I vissa fall måste vi göra ändringar på plattformsnivå som kan innebära att en app i en anpassad container med en gammal basavbildning slutar fungera korrekt. För sådana större ändringar distribuerar vi uppdaterade bilder i god tid så att appar som tar regelbundna uppdateringar inte påverkas negativt. För att undvika potentiella problem med dina appar som körs i anpassade containrar kontrollerar du att du inte ligger för långt efter den senaste delversionen som släppts. Om vi under ett supportärende skulle fastställa att din app har problem eftersom den har en äldre version eller inte stöds, begär vi att du uppdaterar containern till den senaste basavbildningsversionen innan du fortsätter med supporten.

Komma igång

Använd dessa länkar för att komma igång med Azure Functions i Linux-containrar:

Jag vill... Se artikel:
Skapa mina första containerbaserade funktioner Skapa en funktionsapp i en lokal Linux-container
Skapa och distribuera funktioner till Azure Container Apps Skapa dina första containerbaserade funktioner i Azure Container Apps
Skapa och distribuera containerbaserade funktioner till Azure Functions Skapa dina första containerbaserade Azure Functions