Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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. |
- 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.
- I vissa regioner kan Linux-appar på en Premium-plan skalas till 100 instanser. Mer information finns i artikeln premiumplan.
- Specifika gränser för de olika App Service-planalternativen finns i Gränserna för App Service-planen.
- 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.
- När det minsta antalet repliker är inställt på noll beror standardtimeouten på de specifika utlösare som används i appen.
- 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.
- 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 ellermcr.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 ellermcr.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 ellermcr.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 ellermcr.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 ellermcr.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 ellermcr.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 ellermcr.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 |