Azure Functions 中的 Linux 容器支援

當你規劃並開發每個函式在 Azure Functions 中執行時,請專注於程式碼本身。 Azure Functions 可讓您輕鬆地將程式碼專案部署至 Azure 中的函式應用程式。 當你將專案部署到 Linux 函式應用程式時,程式碼會自動在 Azure Functions 建立的容器中執行。 此容器可無縫整合 Functions 管理工具。

Functions 也支援容器化函式應用程式部署。 在容器化部署中,你會從支援的基礎映像在本地 Docker 容器中建立自己的函式應用實例。 接著,您可以將此 容器化函式 應用程式部署至 Azure 中的裝載環境。 建立您自己的函式應用程式容器可讓您自訂或控制函式程式碼的即時執行階段環境。

Important

當您建立自己的容器時,您必須將容器的基底映像更新為最新的支援基底映像。 Azure Functions 支援的基底映像是特定語言的。 請參閱 Azure Functions 基底映像存放庫。

Functions 小組致力於發佈這些基礎映像的每月更新。 一般更新包括 Functions 執行階段和語言的最新次要版本更新與安全性修正。 您應該定期從最新的基礎映像更新容器,並重新部署更新後的容器版本。 如需詳細資訊,請參閱 維護自定義容器。

容器裝載選項

小提示

對於大多數容器化工作負載,請將函式應用放在 Azure 容器應用程式 中。 Container Apps 提供一個完全託管、無伺服器的 Kubernetes 環境,內建事件驅動擴展、可擴展至零及 GPU 支援。 若要開始使用,請參閱 Azure Functions on Azure 容器應用程式。

你有幾種選擇可以在 Azure 中架設容器化函式應用:

主機托管選項 Benefits
Azure 容器應用程式 (Recommended) Azure 容器應用程式 會透過資源Microsoft.App提供者原生地托管和管理你的函式應用容器。 在完全託管、無伺服器,且以 Kubernetes 為基礎的環境中執行你的函式,並內建支援開源監控、mTLS、Dapr 和 KEDA。 支援縮減至零、無伺服器的隨用隨付計費,以及透過工作負載設定檔提供專用硬體和 GPU。 你可以同時享有相同的函式程式設計模型和觸發器,同時獲得容器應用程式的完整功能集。 Azure 中容器化函式應用的推薦主機選項。
Azure 容器應用程式 (legacy) Azure Functions 透過資源Microsoft.Web提供者提供整合支援,將容器化函式應用部署到容器應用環境中。 雖然目前仍受支援,但此選項預計將於未來棄用。 對於新工作負載,請改用推薦的容器應用程式主機選項。
Azure Functions 您可以在 彈性進階 或 App Service (專用) 方案中執行容器,以在 Azure Functions 中裝載容器化函式應用程式。 進階方案裝載提供動態縮放的優點。 您可能想要使用專用方案裝載來利用現有的未使用 App Service 方案資源。
Kubernetes 因為 Azure Functions 執行階段可讓您彈性地裝載您想要的位置和方式,因此您可以直接在 Kubernetes 叢集中裝載及管理函式應用程式容器。 KEDA(以 Kubernetes 為基礎的事件驅動自動調整)與 Azure Functions 執行階段和工具順暢地配對,以提供 Kubernetes 中的事件驅動的調整能力。 重要: 使用 KEDA 或直接部署裝載容器化函式應用程式的 Kubernetes 是一項開放原始碼工作,您可以免費使用。 在這個託管情境中,僅有參與者和社群提供盡力而為的支援。 您負責在叢集中維護自己的函式應用程式容器,即使將它們部署至 Azure Kubernetes Service (AKS)。

功能支援比較

在容器中執行函式應用程式時,Azure Functions 各種功能和行為的支援程度取決於您選擇的容器裝載選項。

Feature/behavior 容器應用程式(推薦) 容器應用程式(legacy)1 進階方案 專用方案 Kubernetes
產品支援 Yes Yes Yes Yes No
功能入口網站整合 Yes No Yes Yes No
事件驅動調整 是(縮放規則) Yes5 Yes No No
縮放上限 (執行個體數目) 10002 10002 1003 10-304 依叢集而異
縮放至零的執行個體 Yes Yes No No KEDA
執行時間限制 Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Core Tools 部署 No No No No func kubernetes
Revisions Yes Yes No No No
部署位置 No No Yes Yes No
串流記錄 Yes Yes Yes Yes No
主控台存取 Yes Yes 是的(使用 Kudu) 是的(使用 Kudu) 是 (在 Pod 中使用 kubectl)
極非經常性存取啟動風險降低 比例規則 最小復本 隨時可用/預熱的實例 n/a n/a
App Service 驗證 Yes Yes Yes Yes No
自訂網域名稱 Yes Yes Yes Yes No
私密金鑰憑證 Yes Yes Yes Yes No
虛擬網路 Yes Yes Yes Yes Yes
可用性區域 Yes Yes Yes Yes Yes
Diagnostics Yes Yes Yes Yes No
專用硬體 是 (工作負載設定檔) 是 (工作負載設定檔) No Yes Yes
專用 GPU 是 (工作負載設定檔) 是 (工作負載設定檔) No No Yes
可設定的記憶體/CPU 計數 (部分機器翻譯) Yes Yes No No Yes
「自由授予」選項 Yes Yes No No No
價格詳細資料 容器應用程式計費 (部分機器翻譯) 容器應用程式計費 (部分機器翻譯) 進階方案計費 (部分機器翻譯) 專用方案計費 (部分機器翻譯) AKS 定價
服務名稱需求 2-32 個字元:限制為小寫字母、數字和連字號。 必須以字母開頭,並以英數字元結尾。 2-32 個字元:限制為小寫字母、數字和連字號。 必須以字母開頭,並以英數字元結尾。 少於64個字元:限制為英數位元和連字元。 不能以連字號開頭或結尾。 少於64個字元:限制為英數位元和連字元。 不能以連字號開頭或結尾。 少於 253 個字元:限制為英數位元和連字元。 必須以英數字元開頭和結尾。
  1. 預計未來將淘汰。 相反地,請使用原生的容器應用程式主機。
  2. 在容器應用程式上,預設值為 10 個執行個體,但您可以設定最大複本數目,其整體上限為 1000。 只要有足夠的核心配額可用,就會接受此設定。 當您從 Azure 入口網站建立函式應用程式時,限制為 300 個執行個體。
  3. 在某些區域中,進階方案上的 Linux 應用程式可以縮放為 100 個執行個體。 如需詳細資訊,請參閱進階方案一文。
  4. 如需各種 App Service 方案選項的特定限制,請參閱 App Service 方案限制。
  5. 需要 KEDA;大部分觸發程式都支援。 若要了解哪些觸發程序支援事件驅動縮放,請參閱 Azure 容器應用程式裝載的考量。
  6. 當複本數目下限設定為零時,預設逾時會取決於應用程式中使用的特定觸發程式。
  7. 沒有強制執行的執行逾時持續時間上限。 不過,在縮減期間提供給函式執行的寬限期為 60 分鐘,在平台更新期間則會提供 10 分鐘的寬限期。
  8. 需要將App Service 方案設定為 AlwaysOn。 在平台更新期間會提供 10 分鐘的寬限期。

維護自定義容器

當你建立自己的容器時,請保持容器的基礎映像檔更新為最新支援的基礎映像。 Azure Functions 的受支援基礎映像為語言特定,可在 Azure Functions 基礎映像存放庫中找到。

Functions 小組致力於發佈這些基礎映像的每月更新。 一般更新包括 Functions 執行階段和語言的最新次要版本更新與安全性修正。 定期從最新的基礎映像更新你的容器,並重新部署更新後的容器版本。

根據您在函式應用程式中使用的語言堆疊,選擇您的基底映像。 下表提供每個堆疊的範例。 一般來說,標籤會以 4- 開頭,用來表示 V4 Functions 執行階段。 當有新的次要版本釋出時,這個標籤會更新以指向新版本。 當你定期重建自訂映像檔時,你會透過同一個標籤拉取新版本,這樣你的應用程式會有相同的更新。 不要使用指定次要執行版本的標籤,因為這些標籤不會收到更新。 無論你重建自訂映像多少次,你的應用程式都可能一直維持在未打補丁的版本。

語言堆疊 建議的基底映像標籤範例
.NET 隔離的工作者模型 mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 或
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(這些範例以 .NET 8 為目標。針對您需要的 .NET 版本選取適當的映像。
.NET (舊版進程內模型) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 或
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(進行中模型的支援將於 2026 年 11 月 10 日結束。) 請盡快遷移到隔離工作者模式 。)
JAVA mcr.microsoft.com/azure-functions/java:4-java21 或
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(這些範例是以 Java 21 為目標。針對您需要的 Java 版本選取適當的映像。
Node.js (JavaScript 或 TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 或
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(這些範例專門針對 Node.js 22。請為您需要的 Node.js 版本選擇適當的映像檔。)
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.6 或
mcr.microsoft.com/azure-functions/powershell:4-powershell7.6-appservice

(這些範例針對 PowerShell 7.6。請選擇所需的 PowerShell 版本的相應映像檔。)
Python mcr.microsoft.com/azure-functions/python:4-python3.12 或
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(這些範例是以 Python 3.12 為目標。針對您需要的 Python 版本選取適當的映像。
自訂處理程式 /其他 mcr.microsoft.com/azure-functions/base:4 或
mcr.microsoft.com/azure-functions/base:4-appservice

以 -appservice 結尾的基底映像檔可以從平台啟用 SSH 和遠端偵錯。 除非你需要這些功能,否則請使用不加 -appservice 後綴的基礎圖片。

Important

僅僅在 Dockerfile 中放置前述標籤是不夠的。 您必須定期從該標籤提取最新的映像,以便重建自定義映像以包含最新的更新。 如果你不拉取最新的映像檔並重建,你的應用程式會繼續在舊的基礎映像上執行。

當你使用自訂映像來建立或部署自己的容器化應用程式時,你有責任確保你的自訂映像會隨已發行的基底映像同步更新。 除了新功能和改進功能之外,這些基底映像更新也可以包含對您的應用程式至關重要的安全性更新。 為了確保您的應用程式受到保護,請確定您保持最新狀態。 定期拉取最新版本的基礎映像,重建自訂容器映像,並重新部署應用程式以使用它。

在某些情況下,Microsoft 需要進行平台層級的變更,可能導致使用舊基礎映像的自訂容器應用程式可能無法正常運作。 針對這些重大變更,Microsoft 會提前推送更新映像檔,避免定期更新的應用程式受到負面影響。 若要避免應用程式在自定義容器中執行的潛在問題,請確定您不會落後於發行的最新次要版本。 在支援案件中,如果 Microsoft 判斷你的應用程式因為舊版本或不支援而出現問題,Microsoft 會要求你先將容器更新到最新的基礎映像版本,才能繼續支援。

入門指南

使用這些連結來開始使用 Linux 容器中的 Azure Functions:

我想要… 請參閱文章:
將函式部署至 Azure 容器應用程式(建議) 在 Azure 容器應用程式上建立您的第一個容器化函式
我第一次在本地建立容器化函式 在本機 Linux 容器中建立函數應用程式
將容器化功能部署到高級或專用方案 建立您的第一個容器化 Azure Functions