Azure Functions의 Linux 컨테이너 지원

개별 함수를 Azure Functions에서 실행할 계획과 개발을 할 때는 코드 자체에 집중하세요. Azure Functions를 사용하면 코드 프로젝트만 Azure의 함수 앱에 쉽게 배포할 수 있습니다. 프로젝트를 리눅스 함수 앱에 배포하면, 코드는 Azure Functions가 자동으로 생성해주는 컨테이너에서 실행됩니다. 이 컨테이너는 Functions 관리 도구와 원활하게 통합됩니다.

Functions는 컨테이너화된 함수 앱 배포도 지원합니다. 컨테이너화된 배포에서는 지원되는 기본 이미지에서 로컬 Docker 컨테이너에 자체 함수 애플리케이션 인스턴스를 생성합니다. 그런 다음 이 컨테이너화된 함수 앱을 Azure의 호스팅 환경에 배포할 수 있습니다. 고유의 함수 앱 컨테이너를 만들면 함수 코드의 즉각적인 런타임 환경을 사용자 지정하거나 제어할 수 있습니다.

Important

사용자 고유의 컨테이너를 만들 때 컨테이너의 기본 이미지를 지원되는 최신 기본 이미지로 업데이트해야 합니다. Azure Functions에 지원되는 기본 이미지는 언어별로 다릅니다. Azure Functions 기본 이미지 리포지토리를 참조하세요.

Functions 팀은 이러한 기본 이미지에 대한 월별 업데이트를 게시하기 위해 최선을 다하고 있습니다. 정기 업데이트에는 Functions 런타임 및 언어 모두에 대한 최신 부 버전 업데이트 및 보안 수정 사항이 포함됩니다. 정기적으로 최신 기본 이미지에서 컨테이너를 업데이트하고 업데이트된 버전의 컨테이너를 다시 배포해야 합니다. 자세한 내용은 사용자 지정 컨테이너 유지 관리를 참조하세요.

컨테이너 호스팅 옵션

Tip

대부분의 컨테이너화된 워크로드는 함수 앱을 Azure Container Apps에서 호스팅하세요. 컨테이너 앱은 이벤트 기반 확장, 제로 확장 및 GPU 지원이 내장된 완전 관리형 서버리스 쿠버네티스 기반 환경을 제공합니다. 시작하려면 Azure Functions on Azure Container Apps를 참조하세요.

Azure에서 컨테이너화된 함수 앱을 호스팅하는 여러 옵션이 있습니다:

호스팅 옵션 Benefits
Azure Container Apps (Recommended) Azure Container Apps는 리소스 프로바이더를 사용하여 Microsoft.App 함수 앱 컨테이너를 네이티브로 호스팅하고 관리합니다. 오픈 소스 모니터링, mTLS, DAPR, KEDA를 내장된 지원으로 갖춘 완전 관리되고 서버리스 쿠버네티스 기반 환경에서 기능을 실행하세요. 0으로 자동 축소, 사용한 만큼만 과금되는 서버리스 요금, 전용 하드웨어 및 워크로드 프로필을 통한 GPU를 지원합니다. 동일한 Functions 프로그래밍 모델과 트리거를 활용하면서 컨테이너 앱의 전체 기능을 누릴 수 있습니다. Azure에서 컨테이너화된 함수 앱에 대한 추천 호스팅 옵션입니다.
Azure Container Apps (legacy) Azure Functions는 리소스 제공자를 Microsoft.Web 사용하여 컨테이너화된 함수 앱을 컨테이너 앱 환경에 배포하는 통합 지원을 제공합니다. 현재 지원되고 있지만, 이 옵션은 향후 폐지될 계획입니다. 새로운 워크로드의 경우, 추천 컨테이너 앱 호스팅 옵션을 사용하세요.
Azure Functions Elastic Premium 또는 App Service(전용) 계획에서 컨테이너를 실행하여 Azure Functions에서 컨테이너화된 함수 앱을 호스트할 수 있습니다. 프리미엄 플랜 호스팅은 동적 크기 조정의 이점을 제공합니다. 기존의 사용되지 않은 App Service 요금제 리소스를 활용하기 위해 전용 플랜 호스팅을 사용할 수 있습니다.
Kubernetes Azure Functions 런타임은 원하는 위치와 방법으로 호스팅하는 유연성을 제공하므로 Kubernetes 클러스터에서 직접 함수 앱 컨테이너를 호스팅하고 관리할 수 있습니다. KEDA (Kubernetes 기반 이벤트 기반 자동 크기 조정)는 Azure Functions 런타임 및 도구와 원활하게 쌍을 이루어 Kubernetes에서 이벤트 기반 규모를 제공합니다. 중요하다: KEDA를 사용하거나 직접 배포하여 컨테이너화된 함수 앱의 Kubernetes 호스팅은 무료로 사용할 수 있는 오픈 소스 작업입니다. 이 호스팅 시나리오에 대한 최상의 지원은 참가자 및 커뮤니티에서만 제공됩니다. AKS(Azure Kubernetes Service)에 배포하는 경우에도 클러스터에서 고유한 함수 앱 컨테이너를 유지 관리할 책임이 있습니다.

기능 지원 비교

컨테이너에서 함수 앱을 실행할 때 Azure Functions의 다양한 기능과 동작이 지원되는 정도는 선택한 컨테이너 호스팅 옵션에 따라 달라집니다.

Feature/behavior 컨테이너 앱 (권장) Container Apps (legacy)1 프리미엄 계획 전용 플랜 Kubernetes
제품 지원 Yes Yes Yes Yes No
Functions 포털 통합 Yes No Yes Yes No
이벤트 기반 크기 조정 예(크기 조정 규칙) Yes5 Yes No No
최대 크기 조정(인스턴스) 10002 10002 1003 10-304 클러스터마다 다릅니다
0으로 크기 조정 인스턴스 Yes Yes No No 케다
집행 시간 제한 Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
핵심 도구 배포 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
가격 책정 세부 정보 Container Apps 청구 Container Apps 청구 프리미엄 플랜 청구 전용 요금제 청구 AKS 가격 책정
서비스 이름 요구 사항 2~32자: 소문자, 숫자 및 하이픈만 사용할 수 있습니다. 문자로 시작하고 영숫자로 끝나야 합니다. 2~32자: 소문자, 숫자 및 하이픈만 사용할 수 있습니다. 문자로 시작하고 영숫자로 끝나야 합니다. 64자 미만: 영숫자 및 하이픈으로 제한됩니다. 하이픈으로 시작하거나 끝낼 수 없습니다. 64자 미만: 영숫자 및 하이픈으로 제한됩니다. 하이픈으로 시작하거나 끝낼 수 없습니다. 253자 미만: 영숫자 및 하이픈으로 제한됩니다. 영숫자 문자로 시작하고 끝나야 합니다.
  1. 향후 폐지될 계획입니다. 대신 네이티브 컨테이너 앱 호스팅을 사용하세요.
  2. Container Apps에서 기본값은 10개의 인스턴스이지만 전체 최대 1,000개 인 최대 복제본 수를 설정할 수 있습니다. 이 설정은 사용할 수 있는 코어 할당량이 충분한 한 적용됩니다. Azure Portal에서 함수 앱을 만들 때 인스턴스 300개로 제한됩니다.
  3. 일부 지역에서는 프리미엄 플랜의 Linux 앱이 인스턴스 100개까지 크기 조정될 수 있습니다. 자세한 내용은 프리미엄 플랜 문서를 참조하세요.
  4. 다양한 App Service 요금제 옵션에 대한 구체적인 한도는 App Service 요금제 한도를 참조하세요.
  5. KEDA 필요; 대부분의 트리거에서 지원됩니다. 이벤트 기반 크기 조정을 지원하는 트리거를 알아보려면 Container Apps 호스팅에 대한 고려 사항을 참조하세요.
  6. 최소 복제본 수가 0으로 설정되면 기본 시간 제한은 앱에서 사용되는 특정 트리거에 따라 달라집니다.
  7. 최대 실행 시간 제한 기간은 적용되지 않습니다. 그러나 함수 실행에 주어지는 유예 기간은 스케일 인 동안 60분이며, 플랫폼 업데이트 중에는 10분의 유예 기간이 주어집니다.
  8. App Service 요금제를 Always On으로 설정해야 합니다. 플랫폼 업데이트 중에는 10분의 유예 기간이 제공됩니다.

사용자 지정 컨테이너 유지 관리

직접 컨테이너를 만들 때는 기본 이미지를 최신 지원되는 기본 이미지로 유지하세요. Azure Functions에 지원되는 기본 이미지는 언어별로 다르며 Azure Functions 기본 이미지 리포지토리에서 찾을 수 있습니다.

Functions 팀은 이러한 기본 이미지에 대한 월별 업데이트를 게시하기 위해 최선을 다하고 있습니다. 정기 업데이트에는 Functions 런타임 및 언어 모두에 대한 최신 부 버전 업데이트 및 보안 수정 사항이 포함됩니다. 최신 기본 이미지에서 정기적으로 컨테이너를 업데이트하고, 업데이트된 버전을 재배포하세요.

함수 앱에서 사용하는 언어 스택에 따라 기본 이미지를 선택합니다. 다음 표에서는 각 스택에 대한 예제를 제공합니다. 일반적으로 태그는 V4 함수의 런타임을 나타내기 위해 시작합니다 4- . 새로운 마이너 버전이 출시될 때, 이 태그는 새 버전을 가리키도록 업데이트됩니다. 커스텀 이미지를 주기적으로 다시 만들 때, 새 버전을 같은 태그로 불러와서 앱에 동일한 업데이트를 제공합니다. 마이너 런타임 버전을 지정하는 태그는 사용하지 마세요. 이 태그들은 업데이트를 받지 않습니다. 사용자 지정 이미지를 아무리 자주 재구성해도 앱이 여전히 패치되지 않은 버전으로 남아 있을 수 있습니다.

언어 스택 권장되는 기본 이미지 태그 예제
.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일에 종료됩니다. 가능한 한 빨리 격 리 작업자 모델로 마이그레이션하세요 .)
자바 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 버전에 맞는 이미지를 선택하세요.)
파이썬 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 Container Apps에 배포(권장) Azure Container Apps에서 첫 번째 컨테이너화된 함수 만들기
처음으로 로컬에서 컨테이너화된 함수를 만들었습니다 로컬 Linux 컨테이너에서 함수 앱 만들기
컨테이너화된 기능을 프리미엄 또는 전용 플랜에 배포하세요 첫 번째 컨테이너화된 Azure Functions 만들기