共用方式為


Azure Functions 中的 Linux 容器支援

在規劃和開發要在 Azure Functions 中執行的個別函式時,您通常會專注於程式碼本身。 Azure Functions 可讓您輕鬆地將程式碼專案部署至 Azure 中的函式應用程式。 當您將專案部署至 Linux 函式應用程式時,您的程式代碼會在為您自動建立且順暢地與 Functions 管理工具整合的容器中執行。

Functions 也支援容器化函式應用程式部署。 在容器化部署中,您會在本機 Docker 容器中,根據支援的架構影像,建立自己的函式應用程式執行個體。 接著,您可以將此 容器化函式 應用程式部署至 Azure 中的裝載環境。 建立您自己的函式應用程式容器可讓您自訂或控制函式程式碼的即時執行階段環境。

Important

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

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

容器裝載選項

在 Azure 中載入容器化函式應用程式有數個選項:

主機托管選項 Benefits
Azure 容器應用程式 (部分機器翻譯) Azure Functions 提供整合式支援,可在 Azure 容器應用程式上開發、部署和管理容器化函數應用程式。 這項整合可讓您使用 Azure 入口網站中的相同 Functions 工具和頁面來管理您的應用程式。 使用 Azure Container Apps 將函式應用程式容器裝載於與其他微服務、API、網站、工作流程或其他容器裝載程式相同的環境中。 Azure 容器應用程式裝載可讓您在受控 Kubernetes 型環境中執行函式,並內建對開放原始碼監視、mTLS、Dapr 和 KEDA 的支援。 支援自動縮放至零,並提供無伺服器隨用隨付裝載模型。 您也可以使用工作負載設定檔來要求專用硬體,甚至是 GPU。 容器化函式應用程式 n Azure 的建議裝載選項。
已啟用 Azure Arc 的 Kubernetes 叢集 (預覽) 您可以在已啟用 Azure Arc 的 Kubernetes 叢集上裝載函式應用程式,形式為僅限程式碼部署,或使用自訂 Linux 容器。 Azure Arc 可讓您連結 Kubernetes 叢集,以便您可以在 Azure 中加以管理和設定。 在已啟用 Azure Arc 的 Kubernetes 叢集上裝載 Azure Functions 容器目前為預覽功能。 如需詳細資訊,請參閱使用容器和 Azure Functions
Azure Functions 您可以在 彈性進階App Service (專用) 方案中執行容器,以在 Azure Functions 中裝載容器化函式應用程式。 使用 Container Apps 裝載,以取得 Container Apps 的豐富容器支援。 進階方案裝載提供動態縮放的優點。 您可能想要使用專用方案裝載來利用現有的未使用 App Service 方案資源。
Kubernetes 因為 Azure Functions 執行階段可讓您彈性地裝載您想要的位置和方式,因此您可以直接在 Kubernetes 叢集中裝載及管理函式應用程式容器。 KEDA(以 Kubernetes 為基礎的事件驅動自動調整)與 Azure Functions 執行階段和工具順暢地配對,以提供 Kubernetes 中的事件驅動的調整能力。 重要: 使用 KEDA 或直接部署裝載容器化函式應用程式的 Kubernetes 是一項開放原始碼工作,您可以免費使用。 在這個託管情境中,僅有參與者和社群提供盡力而為的支援。 您負責在叢集中維護自己的函式應用程式容器,即使將它們部署至 Azure Kubernetes Service (AKS)。

功能支援比較

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

Feature/behavior 容器應用程式 (整合) 容器應用程式 (直接) 進階方案 專用方案 Kubernetes
產品支援 Yes No Yes Yes No
Azure Functions 入口網站整合 No No Yes Yes No
事件驅動調整 Yes5 是(縮放規則 Yes No No
縮放上限 (執行個體數目) 10001  10001  1002  10-303  因叢集而異
縮放至零的執行個體 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. 在容器應用程式上,預設值為 10 個執行個體,但您可以設定最大複本數目,其整體上限為 1000。 只要有足夠的核心配額可用,就會接受此設定。 當您從 Azure 入口網站建立函式應用程式時,限制為 300 個執行個體。
  2. 在某些區域中,進階方案上的 Linux 應用程式可以縮放為 100 個執行個體。 如需詳細資訊,請參閱進階方案一文
  3. 如需各種 App Service 方案選項的特定限制,請參閱 App Service 方案限制
  4. 需要 KEDA;大部分觸發程式都支援。 若要了解哪些觸發程序支援事件驅動縮放,請參閱 Azure 容器應用程式裝載的考量
  5. 複本數目下限設定為零時,預設逾時會取決於應用程式中使用的特定觸發程式。
  6. 沒有強制執行的執行逾時持續時間上限。 不過,在縮減期間提供給函式執行的寬限期為 60 分鐘,在平台更新期間則會提供 10 分鐘的寬限期。
  7. 需要將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.4
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(這些範例是以 PowerShell 7.4 為目標。針對您需要的 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 中僅擁有上述標籤之一是不夠的。 您必須定期從該標籤提取最新的映像,以便重建自定義映像以包含最新的更新。 如果您未提取最新的映像並重建,您的應用程式將會繼續在舊的基底映射上執行。

當您使用自訂影像建立或部署自己的容器化應用程式時,您必須負責確保您的自訂影像與我們已發行的基本影像保持同步。 除了新功能和改進功能之外,這些基底映像更新也可以包含對您的應用程式至關重要的安全性更新。 為了確保您的應用程式受到保護,請確定您保持最新狀態。 您應該定期提取最新版的基底映射、重建您的自定義容器映像,以及重新部署您的應用程式以使用它。

在某些情況下,我們必須進行平臺層級變更,這可能表示使用舊基底映射的自定義容器中的應用程式可能會停止正常運作。 對於這類重大變更,我們會提前推出更新的映像,讓採用一般更新的應用程式不會受到負面影響。 若要避免應用程式在自定義容器中執行的潛在問題,請確定您不會落後於發行的最新次要版本。 在支援案例中,如果判斷您的應用程式發生問題,因為它位於較舊或不支援的版本上,我們會要求您將容器更新為最新的基底映像版本,然後再繼續支援。

入門指南

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

我想要… 請參閱文章:
建立我的第一個容器化函式 在本機 Linux 容器中建立函數應用程式
建立函式並將其部署至 Azure 容器應用程式 在 Azure 容器應用程式上建立您的第一個容器化函式
建立容器化函式並將其部署至 Azure Functions 建立您的第一個容器化 Azure Functions