다음을 통해 공유


Azure Functions의 Linux 컨테이너 지원

Azure Functions에서 실행할 개별 Functions를 계획하고 개발할 때 일반적으로 코드 자체에 중점을 둡니다. Azure Functions를 사용하면 코드 프로젝트만 Azure의 함수 앱에 쉽게 배포할 수 있습니다. Linux 함수 앱에 프로젝트를 배포할 때 코드는 자동으로 생성되고 Functions 관리 도구와 원활하게 통합되는 컨테이너에서 실행됩니다.

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

Important

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

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

컨테이너 호스팅 옵션

Azure에서 컨테이너화된 함수 앱을 호스팅하기 위한 몇 가지 옵션이 있습니다.

호스팅 옵션 Benefits
Azure Container Apps Azure Functions는 Azure Container Apps에서 컨테이너화된 함수 앱을 개발, 배포 및 관리하기 위한 통합 지원을 제공합니다. 이 통합을 통해 Azure Portal에서 동일한 Functions 도구 및 페이지를 사용하여 앱을 관리할 수 있습니다. Azure Container Apps를 사용하여 다른 마이크로 서비스, API, 웹 사이트, 워크플로 또는 기타 컨테이너 호스팅 프로그램과 동일한 환경에서 함수 앱 컨테이너를 호스트합니다. Container Apps 호스팅을 사용하면 오픈 소스 모니터링, mTLS, Dapr 및 KEDA에 대한 기본 제공 지원을 통해 관리되는 Kubernetes 기반 환경에서 함수를 실행할 수 있습니다. 크기 조정을 0으로 지원하고 서버리스 종량제 호스팅 모델을 제공합니다. 워크로드 프로필을 사용하여 전용 하드웨어(GPU)를 요청할 수도 있습니다. 컨테이너화된 함수 앱 n Azure에 권장되는 호스팅 옵션입니다.
Azure Arc 지원 Kubernetes 클러스터(미리 보기) Azure Arc 지원 Kubernetes 클러스터에서 코드 전용 배포 또는 사용자 지정 Linux 컨테이너로 함수 앱을 호스팅할 수 있습니다. Azure Arc를 사용하면 Kubernetes 클러스터를 연결하여 Azure에서 관리하고 구성할 수 있습니다. Azure Arc 지원 Kubernetes 클러스터에서 Azure Functions 컨테이너 호스팅은 현재 미리 보기 상태입니다. 자세한 내용은 컨테이너 및 Azure Functions 작업을 참조하세요.
Azure Functions Elastic Premium 또는 App Service(전용) 계획에서 컨테이너를 실행하여 Azure Functions에서 컨테이너화된 함수 앱을 호스트할 수 있습니다. Container Apps에서 다양한 컨테이너 지원을 위해 Container Apps 호스팅을 사용합니다. 프리미엄 플랜 호스팅은 동적 크기 조정의 이점을 제공합니다. 기존의 사용되지 않은 App Service 요금제 리소스를 활용하기 위해 전용 플랜 호스팅을 사용할 수 있습니다.
Kubernetes Azure Functions 런타임은 원하는 위치와 방법으로 호스팅하는 유연성을 제공하므로 Kubernetes 클러스터에서 직접 함수 앱 컨테이너를 호스팅하고 관리할 수 있습니다. KEDA (Kubernetes 기반 이벤트 기반 자동 크기 조정)는 Azure Functions 런타임 및 도구와 원활하게 쌍을 이루어 Kubernetes에서 이벤트 기반 규모를 제공합니다. 중요하다: KEDA를 사용하거나 직접 배포하여 컨테이너화된 함수 앱의 Kubernetes 호스팅은 무료로 사용할 수 있는 오픈 소스 작업입니다. 이 호스팅 시나리오에 대한 최상의 지원은 참가자 및 커뮤니티에서만 제공됩니다. AKS(Azure Kubernetes Service)에 배포하는 경우에도 클러스터에서 고유한 함수 앱 컨테이너를 유지 관리할 책임이 있습니다.

기능 지원 비교

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

Feature/behavior Container Apps(통합) Container Apps(직접) 프리미엄 계획 전용 플랜 Kubernetes
제품 지원 Yes No Yes Yes No
Functions 포털 통합 No No Yes Yes No
이벤트 기반 크기 조정 Yes5 예(크기 조정 규칙) Yes No No
최대 크기 조정(인스턴스) 10001  10001  1002  10-303  클러스터에 따라 다름
0으로 크기 조정 인스턴스 Yes Yes No No KEDA
실행 시간 제한 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. Container Apps에서 기본값은 10개의 인스턴스이지만 전체 최대 1,000개 인 최대 복제본 수를 설정할 수 있습니다. 이 설정은 사용할 수 있는 코어 할당량이 충분한 한 적용됩니다. Azure Portal에서 함수 앱을 만들 때 인스턴스 300개로 제한됩니다.
  2. 일부 지역에서는 프리미엄 플랜의 Linux 앱이 인스턴스 100개까지 크기 조정될 수 있습니다. 자세한 내용은 프리미엄 플랜 문서를 참조하세요.
  3. 다양한 App Service 요금제 옵션에 대한 구체적인 한도는 App Service 요금제 한도를 참조하세요.
  4. KEDA 필요; 대부분의 트리거에서 지원됩니다. 이벤트 기반 크기 조정을 지원하는 트리거를 알아보려면 Container Apps 호스팅에 대한 고려 사항을 참조하세요.
  5. 최소 복제본 수가 0으로 설정되면 기본 시간 제한은 앱에서 사용되는 특정 트리거에 따라 달라집니다.
  6. 최대 실행 시간 제한 기간은 적용되지 않습니다. 그러나 함수 실행에 주어지는 유예 기간은 스케일 인 동안 60분이며, 플랫폼 업데이트 중에는 10분의 유예 기간이 주어집니다.
  7. App Service 요금제를 Always On으로 설정해야 합니다. 플랫폼 업데이트 중에는 10분의 유예 기간이 제공됩니다.

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

사용자 고유의 컨테이너를 만들 때는 컨테이너의 기본 이미지를 지원되는 최신 기본 이미지로 업데이트해야 합니다. Azure Functions에 지원되는 기본 이미지는 언어별로 다르며 Azure Functions 기본 이미지 리포지토리에서 찾을 수 있습니다.

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

함수 앱에서 사용하는 언어 스택에 따라 기본 이미지를 선택합니다. 다음 표에서는 각 스택에 대한 예제를 제공합니다. 일반적으로 태그는 V4 Functions 런타임을 나타내기 위해 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일에 In-process 모델에 대한 지원이 종료됩니다. 가능한 한 빨리 격리된 작업자 모델로 마이그레이션 해야 합니다.)
자바 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 버전에 적합한 이미지를 선택합니다.)
파이썬 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 Container Apps에 함수 만들기 및 배포 Azure Container Apps에서 첫 번째 컨테이너화된 함수 만들기
Azure Functions에 컨테이너화된 Functions 만들기 및 배포 첫 번째 컨테이너화된 Azure Functions 만들기