ACR(Azure Container Registry)은 컨테이너 이미지에 대한 프라이빗 레지스트리입니다. 프라이빗 컨테이너 레지스트리를 사용하면 애플리케이션과 사용자 지정 코드를 안전하게 빌드하고 배포할 수 있습니다.
이 자습서에서는 ACR 인스턴스를 배포하고 컨테이너 이미지를 푸시합니다. 다음 방법을 배우게 됩니다.
- ACR 인스턴스를 만듭니다.
- ACR 작업을 사용하여 컨테이너 이미지를 빌드하고 ACR에 푸시합니다.
- 레지스트리의 이미지를 봅니다.
시작하기 전에
이전 자습서에서 애플리케이션 코드 리포지토리를 복제하고 Docker를 사용하여 간단한 Azure Store Front 애플리케이션의 컨테이너 이미지를 만들었습니다. Azure 스토어 프런트 앱 이미지를 만들지 않은 경우 Tutorial 1 - AKS 애플리케이션 준비로 돌아갑니다.
이 자습서에는 Azure CLI 버전 2.0.53 이상이 필요합니다. 버전을 찾으려면 az --version 명령을 실행합니다. 설치하거나 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
Azure Container Registry 만들기
ACR 인스턴스를 만들기 전에 리소스 그룹이 필요합니다. Azure 리소스 그룹은 Azure 리소스를 배포하고 관리하는 논리적 컨테이너입니다.
리소스 그룹 이름, 위치 및 레지스트리 이름에 대한 변수를 만듭니다. 이러한 값을 사용하거나 직접 만들 수 있습니다.
ACRNAME저장된 레지스트리 이름 변수의 값은 Azure 내에서 고유해야 하며 5-50개의 소문자 영숫자를 포함해야 합니다.export RESOURCE_GROUP=myResourceGroup export LOCATION=westus2 export RANDOM_STRING=$(printf '%05d%05d' "$RANDOM" "$RANDOM") export ACRNAME="myregistry${RANDOM_STRING}"ACRNAME저장된 레지스트리 이름 변수의 값은 Azure 내에서 고유해야 하며 5-50개의 소문자 영숫자를 포함해야 합니다. 이ACRNAME값은 레지스트리 이름이 고유하도록 임의의 10자리 문자열을 저장하는 변수와RANDOM_STRING연결됩니다. 리소스 그룹에 대한RESOURCE_GROUP값과LOCATION값이 있는 변수 입니다. 이러한 값을 사용하거나 직접 만들 수 있습니다.az group create명령을 사용하여 리소스 그룹을 만듭니다.az group create --name $RESOURCE_GROUP --location $LOCATIONaz acr create명령을 사용하여 ACR 인스턴스를 만들고 고유한 레지스트리 이름을 제공합니다. 기본 SKU는 개발을 위해 비용에 최적화된 진입점으로, 스토리지와 처리량의 균형을 적절하게 맞추었습니다.az acr create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --name $ACRNAME \ --sku Basic
컨테이너 이미지를 빌드하고 레지스트리에 푸시
Azure CLI az acr build 명령을 사용하여 이미지를 빌드하고 ACR에 푸시합니다. 이 az acr build 명령은 이전 문서에서 복제한 리포지토리의 이미지를 사용하여 AKS용 앱을 준비합니다. 해당 디렉터리로 전환하지 않으면 build 명령이 실패할 수 있습니다. 예를 들어 디모레포 디렉터리를 만들고 리포지토리를 복제한 경우 리포지토리의 루트 디렉터리는 aks-store-demo이므로 demorepo/aks-store-demo 디렉터리로 전환합니다.
레지스트리에 컨테이너 이미지를 빌드하거나 푸시하는 동일한 Azure PowerShell cmdlet이 없습니다. Azure CLI 단계를 사용해야 하지만 ACRNAME 변수가 PowerShell에서 만든 값으로 설정됩니다. PowerShell에서 명령을 $ACRNAME사용하여 값을 가져올 수 있습니다.
다음 예에서는 product-service 이미지를 빌드하지 않습니다. 이 이미지를 빌드하는 데 시간이 오래 걸릴 수 있으며 GitHub GHCR(Container Registry)에서 이미 사용할 수 있는 컨테이너 이미지가 있습니다. 이 az acr import 명령을 사용하여 GHCR에서 ACR 인스턴스로 이미지를 가져올 수 있습니다. 또한 rabbitmq 이미지를 빌드하지 않습니다. 이 이미지는 Docker Hub 공용 리포지토리에서 사용할 수 있으며 빌드하거나 ACR 인스턴스로 푸시할 필요가 없습니다.
az acr import \
--name $ACRNAME \
--source ghcr.io/azure-samples/aks-store-demo/product-service:latest \
--image aks-store-demo/product-service:latest
az acr build \
--registry $ACRNAME \
--image aks-store-demo/order-service:latest ./src/order-service/
az acr build \
--registry $ACRNAME \
--image aks-store-demo/store-front:latest ./src/store-front/
레지스트리에서 이미지 나열
az acr repository list 명령을 사용하여 ACR 인스턴스의 이미지를 봅니다.
az acr repository list --name $ACRNAME --output table
다음 출력 예에는 레지스트리에서 사용 가능한 이미지가 나열됩니다.
Result
----------------
aks-store-demo/product-service
aks-store-demo/order-service
aks-store-demo/store-front
다음 단계
이 자습서에서는 ACR을 만들고 AKS 클러스터에서 사용할 이미지를 여기에 푸시했습니다. 다음 방법에 대해 알아보았습니다.
- ACR 인스턴스를 만듭니다.
- ACR 작업을 사용하여 컨테이너 이미지를 빌드하고 ACR에 푸시합니다.
- 레지스트리의 이미지를 봅니다.
다음 자습서에서는 Azure Kubernetes 클러스터를 배포하는 방법을 알아봅니다.