Kommentar
Å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 individuella funktioner för att köras i Azure Functions, fokusera på själva koden. Azure Functions gör det enkelt att bara distribuera kodprojektet till en funktionsapp i Azure. När du distribuerar ditt projekt till en Linux-funktionsapp körs din kod i en container som Azure Functions automatiskt skapar åt dig. Denna container integreras sömlöst med funktioners hanteringsverktyg.
Functions stöder även distribution av containerbaserade funktionsappar. I en containeriserad distribution skapar du din 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
Tip
För de flesta containeriserade arbetsbelastningar, hosta dina funktionsappar i Azure Container Apps. Container Apps erbjuder en fullt hanterad, serverlös Kubernetes-baserad miljö med inbyggd händelsedriven skalning, skalning till noll och GPU-stöd. För att komma igång, se Azure Functions on Azure Container Apps.
Du har flera alternativ för att hosta dina containeriserade funktionsappar i Azure:
| Hostingalternativ | Benefits |
|---|---|
| Azure Container Apps (Rekommenderas) | Azure Container Apps hostar och hanterar dina funktionsapp-containrar nativt genom att använda resursleverantörenMicrosoft.App. Kör dina funktioner i en fullt hanterad, serverlös Kubernetes-baserad miljö med inbyggt stöd för öppen källkodsövervakning, mTLS, Dapr och KEDA. Stöder skalbar till noll, serverlös betala-för-det-du-använder-fakturering, dedikerad hårdvara och GPU:er via arbetsbelastningsprofiler. Du drar nytta av samma Functions-programmeringsmodell och triggers samtidigt som du får hela funktionsuppsättningen av Container Apps.
Rekommenderat hostingalternativ för containeriserade funktionsappar i Azure. |
| Azure Container Apps (legacy) | Azure Functions erbjuder integrerat stöd för att distribuera containeriserade funktionsappar till en Container Apps-miljö genom att använda resursleverantörenMicrosoft.Web. Även om det för närvarande stöds är detta alternativ planerat för framtida avveckling. För nya arbetsbelastningar, använd istället det rekommenderade alternativet Container Apps hosting. |
| 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). 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 | Containerappar (rekommenderas) | Container Apps (legacy)1 | Premium-plan | Dedikerad plan | Kubernetes |
|---|---|---|---|---|---|
| Produktsupport | Yes | Yes | Yes | Yes | No |
| Integration av funktionsportaler | Yes | No | Yes | Yes | No |
| Händelsedriven skalbarhet | Ja (skala regler) | Yes5 | Yes | No | No |
| Maximal skala (instanser) | 10002 | 10002 | 1003 | 10-304 | Varierar beroende på kluster |
| Instanser som skalas till noll | Yes | Yes | No | No | KEDA |
| Exekveringstidsgräns | 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 (använder Kudu) | Ja (använder Kudu) | Ja (i poddar med användning avkubectl) |
| Minskning av kallstart | Skaleringsregler | Minsta antal repliker | 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 |
| "Gratis bidrag"-alternativet | 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. |
- Planerat för framtida avskrivning. Använd istället native Container Apps hosting.
- 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 dina egna containrar, håll basavbilden för din container uppdaterad till den senaste stödda basavbilden. 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. Uppdatera regelbundet din container från den senaste basavbilden och distribuera om den uppdaterade versionen av din container.
Välj basavbildningen baserat på språkstacken som du använder i funktionsappen. Följande tabell innehåller exempel för varje stack. Generellt börjar taggen med 4- för att ange V4 Functions-körtiden. När nya mindre versioner släpps uppdateras denna tagg för att peka på den nya versionen. När du periodvis bygger om din anpassade image drar du de nya versionerna genom samma tagg, så att din app får samma uppdateringar. Använd inte taggar som specificerar mindre runtime-versioner, eftersom dessa taggar inte får några uppdateringar. Din app kan potentiellt finnas kvar i en opatchad version, oavsett hur ofta du bygger om din anpassade image.
| 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(Stödet för den pågående modellen upphör den 10 november 2026. Migrera till modellen för isolerad arbetare 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 dessa funktioner, använd basbilderna utan suffixet -appservice .
Important
Det räcker inte att bara ha en av de föregående taggarna 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 avbilden och bygger om fortsätter din app att köras på den gamla basavbilden.
När du skapar eller distribuerar din egen containeriserade app med en anpassad image är du ansvarig för att se till att din anpassade image förblir up-todatum med de släppta basavbilderna. 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. Hämta regelbundet den senaste versionen av basavbilden, bygg om din anpassade containeravbildning och distribuera din app igen för att använda den.
I vissa fall krävs det att Microsoft gör plattformsnivåändringar som kan innebära att en app i en anpassad container som använder en gammal basimage slutar fungera korrekt. För sådana stora förändringar rullar Microsoft ut uppdaterade bilder i god tid så att appar som tar emot 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. Under ett supportärende, om Microsoft upptäcker att din app har problem eftersom den är på en äldre eller ej stödd version, ber Microsoft dig uppdatera din container 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: |
|---|---|
| Distribuera funktioner till Azure Container Apps (rekommenderas) | Skapa dina första containerbaserade funktioner i Azure Container Apps |
| Skapa mina första containeriserade funktioner lokalt | Skapa en funktionsapp i en lokal Linux-container |
| Distribuera containeriserade funktioner till en Premium- eller dedikerad plan | Skapa dina första containerbaserade Azure Functions |