자습서: Azure Container Instances에 컨테이너 애플리케이션 배포

3부작 시리즈의 마지막 자습서입니다. 시리즈의 앞부분에서는 컨테이너 이미지를 만들어Azure Container Registry에 푸시했습니다. 이 문서에서는 Azure Container Instances에 컨테이너를 배포하여 이 시리즈를 완료합니다.

이 자습서에서는 다음을 수행합니다.

  • Azure Container Registry에서 Azure Container Instances에 컨테이너 배포
  • 브라우저에서 실행 중인 애플리케이션 보기
  • 컨테이너의 로그 표시

시작하기 전에

이 자습서를 완료하려면 다음 요구 사항을 충족해야 합니다.

Azure CLI: 로컬 컴퓨터에 Azure CLI 버전 2.0.29 이상이 설치되어 있어야 합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드가 필요한 경우, Azure CLI 설치를 참조하세요.

Docker: 이 자습서에서는 컨테이너, 컨테이너 이미지 및 기본 docker 명령과 같은 핵심 Docker 개념에 대한 기본적인 지식이 있다고 가정합니다. Docker 및 컨테이너에 대한 기본 사항은 Docker 개요를 참조하세요.

Docker: 이 자습서를 완료하려면 Docker가 로컬에 설치되어 있어야 합니다. Docker는 macOS, WindowsLinux에서 Docker 환경을 구성하는 패키지를 제공합니다.

Important

Azure Cloud Shell에는 Docker 디먼이 포함되어 있지 않으므로 이 자습서를 완료하려면 반드시로컬 컴퓨터에 Azure CLI와 Docker 엔진을 모두 설치해야 합니다. 이 자습서에는 Azure Cloud Shell을 사용할 수 없습니다.

Azure CLI를 사용하여 컨테이너 배포

이 섹션에서는 Azure CLI를 사용하여 첫 번째 자습서에서 작성되고 두 번째 자습서에서 Azure Container Registry에 푸시된 이미지를 배포합니다. 계속 진행하려면 먼저 이러한 자습서를 완료해야 합니다.

레지스트리 자격 증명 가져오기

두 번째 자습서에서 만든 이미지처럼 프라이빗 Azure 컨테이너 레지스트리에 호스트되는 이미지를 배포하는 경우 레지스트리에 액세스하기 위한 자격 증명을 제공해야 합니다.

많은 시나리오에 대한 모범 사례는 레지스트리에 대한 끌어오기 권한이 있는 Microsoft Entra 서비스 주체를 만들고 구성하는 것입니다. 필요한 권한이 있는 서비스 주체를 생성하는 샘플 스크립트는 Azure Container Instances의 Azure Container Registry를 사용하여 인증을 참조하세요. 서비스 주체 ID서비스 주체 암호를 적어둡니다. 컨테이너를 배포할 때 이러한 자격 증명을 사용하여 레지스트리에 액세스합니다.

또한 컨테이너 레지스트리 로그인 서버의 전체 이름이 필요합니다(<acrName>을 레지스트리 이름으로 바꾸기).

az acr show --name <acrName> --query loginServer

컨테이너 배포

이제 az container create 명령을 사용하여 컨테이너를 배포합니다. <acrLoginServer>를 이전 명령에서 얻은 값으로 바꿉니다. <service-principal-ID><service-principal-password>를 레지스트리에 액세스하기 위해 만든 서비스 주체 ID 및 암호로 바꿉니다. <aciDnsLabel>을 원하는 DNS 이름으로 바꿉니다.

az container create --resource-group myResourceGroup --name aci-tutorial-app --image <acrLoginServer>/aci-tutorial-app:v1 --cpu 1 --memory 1 --registry-login-server <acrLoginServer> --registry-username <service-principal-ID> --registry-password <service-principal-password> --ip-address Public --dns-name-label <aciDnsLabel> --ports 80

몇 초 정도 지나면 Azure에서 초기 응답이 수신됩니다. --dns-name-label 값은 컨테이너 인스턴스를 만드는 Azure 지역 내에서 고유해야 합니다. 명령을 실행한 결과 DNS 이름 레이블 오류 메시지가 표시되는 경우에는 이전 명령의 값을 수정합니다.

배포 진행률 확인

배포의 상태를 확인하려면 az container show를 사용합니다.

az container show --resource-group myResourceGroup --name aci-tutorial-app --query instanceView.state

상태가 보류 중에서 실행 중으로 변경될 때까지 az container show 명령을 1분 미만으로 반복합니다. 컨테이너가 실행 중 상태가 되면 다음 단계를 진행합니다.

애플리케이션 및 컨테이너 로그 보기

배포에 성공하면 az container show 명령을 사용하여 컨테이너의 FQDN(정규화된 도메인 이름)을 표시합니다.

az container show --resource-group myResourceGroup --name aci-tutorial-app --query ipAddress.fqdn

예시:

"aci-demo.eastus.azurecontainer.io"

실행 중인 애플리케이션을 보려면 원하는 브라우저에서 표시된 DNS 이름으로 이동합니다.

브라우저의 Hello World 앱

또한 컨테이너의 로그 출력을 볼 수 있습니다.

az container logs --resource-group myResourceGroup --name aci-tutorial-app

예제 출력:

listening on port 80
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET / HTTP/1.1" 200 1663 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET /favicon.ico HTTP/1.1" 404 150 "http://aci-demo.eastus.azurecontainer.io/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"

리소스 정리

더 이상 이 자습서 시리즈에서 만든 리소스가 필요하지 않은 경우 az group delete 명령을 실행하여 리소스 그룹 및 여기에 포함된 모든 리소스를 제거할 수 있습니다. 이 명령은 실행 중인 컨테이너뿐만 아니라 생성한 컨테이너 레지스트리 및 모든 관련 리소스를 삭제합니다.

az group delete --name myResourceGroup

다음 단계

이 자습서에서는 Azure Container Instances에 컨테이너를 배포하는 프로세스를 완료했습니다. 다음 단계가 완료되었습니다.

  • Azure CLI를 사용하여 Azure Container Registry의 컨테이너 배포
  • 브라우저에서 애플리케이션 보기
  • 컨테이너 로그 보기

기본 사항을 알아보았으니, 컨테이너 그룹의 작동 방식 등 Azure Container Instances에 대해 자세히 알아보겠습니다.

Azure Container Instances의 컨테이너 그룹