자습서: Azure CLI를 사용하여 Azure Container Instances로 스폿 컨테이너 배포(미리 보기)
스폿 컨테이너는 ACI의 단순성과 스폿 VM의 저렴한 비용을 결합하여 고객이 컨테이너화된 중단 가능 워크로드를 대규모로 쉽고 저렴하게 실행할 수 있도록 해줍니다. Azure Container Instances를 사용하여 서버리스 스폿 컨테이너를 실행합니다. 사용하지 않는 Azure 용량에서 중단 가능한 컨테이너화된 워크로드를 저렴한 비용으로 실행하고 Azure Kubernetes Service와 같은 전체 컨테이너 오케스트레이션 플랫폼이 필요하지 않은 경우 주문형 스폿 컨테이너에 애플리케이션을 배포합니다.
이 빠른 시작에서는 Azure CLI를 사용하여 스폿 컨테이너를 사용하여 helloworld 컨테이너를 배포합니다. 단일 배포 명령을 실행한 후 몇 초 후에 컨테이너 로그를 찾아볼 수 있습니다.
- 이 빠른 시작에는 Azure CLI 버전 2xxx 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
리소스 그룹 만들기
모든 Azure 리소스와 마찬가지로 Azure 컨테이너 인스턴스는 리소스 그룹에 배포해야 합니다. 리소스 그룹을 사용하면 관련 Azure 리소스를 구성하고 관리할 수 있습니다.
먼저, 다음 az group create 명령을 사용하여 westus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name myResourceGroup --location westus
컨테이너 만들기
이제 리소스 그룹이 있으므로 Azure에서 스폿 컨테이너를 실행할 수 있습니다. Azure CLI를 사용하여 Spot 컨테이너 그룹을 만들려면 리소스 그룹 이름, 컨테이너 인스턴스 이름, 컨테이너 이미지 및 'priority'라는 새 속성을 az container create 명령에 'Spot' 값으로 제공합니다. 이 빠른 시작에서는 공용 mcr.microsoft.com/azuredocs/aci-helloworld
이미지를 사용합니다. 이 이미지는 고정 HTML 페이지를 제공하는 Node.js로 작성된 작은 웹앱을 패키징합니다.
열려는 하나 이상의 포트, DNS 이름 레이블 또는 둘 다를 지정하여 스폿 컨테이너를 인터넷에 노출할 수 없습니다. 이 빠른 시작에서는 DNS 이름 레이블 없이 helloworld 이미지를 사용하여 컨테이너를 배포합니다. 공개적으로 연결할 수 없습니다. 컨테이너 로그를 쿼리하여 컨테이너가 기본 포트 80에서 수신 대기하는지 확인할 수 있습니다.
컨테이너 인스턴스를 시작하려면 다음과 유사한 명령을 실행합니다.
az container create --resource-group acispotdemo --name acispotclitest --image mcr.microsoft.com/azuredocs/aci-helloworld --priority spot
몇 초 내에 Azure CLI로부터 배포가 완료되었음을 알려주는 응답을 받습니다. az container show 명령을 사용하여 상태를 확인합니다.
az container show --resource-group acispotdemo --name acispotclitest --query "{ProvisioningState:provisioningState}" --out table
명령을 실행하면 컨테이너의 FQDN(정규화된 도메인 이름) 및 해당 프로비전 상태가 표시됩니다.
ContainerGroupName ProvisioningState
--------------------------------- -------------------
acispotclitest Succeeded
컨테이너의 ProvisioningState
가 Succeeded이면 축하합니다! Docker 컨테이너에서 실행되는 애플리케이션이 Azure에 성공적으로 배포되었습니다.
컨테이너 로그 끌어오기
컨테이너 또는 컨테이너가 실행되는 애플리케이션의 문제를 해결해야 하거나 해당 문제에 대한 출력만 보려는 경우 컨테이너 인스턴스의 로그를 확인하면서 시작합니다.
az container logs 명령을 사용하여 컨테이너 인스턴스 로그를 끌어옵니다.
az container logs --resource-group acispotdemo --name acispotclitest
출력은 컨테이너에 대한 로그를 표시하며 다음 출력을 표시해야 합니다.
listening on port 80
출력 스트림 연결
로그를 확인하는 것 외에도 로컬 표준 출력과 표준 오류 스트림을 컨테이너의 해당 표준 출력 스트림에 연결할 수 있습니다.
먼저 az container attach 명령을 실행하여 로컬 콘솔을 컨테이너의 출력 스트림에 연결합니다.
az container attach --resource-group acispotdemo --name acispotclitest
연결한 후에는 브라우저를 몇 번 새로 고쳐 더 많은 출력을 생성합니다. 완료되면 Control+C
를 사용하여 콘솔을 분리합니다. 다음 예제와 비슷한 내용이 출력됩니다.
Container 'acispotclitest' is in state 'Running'...
Start streaming logs:
listening on port 80
리소스 정리
컨테이너 작업을 완료했으면 az container delete 명령을 사용하여 제거합니다.
az container delete --resource-group acispotdemo --name acispotclitest
컨테이너가 삭제되었는지 확인하려면 az container list 명령을 실행합니다.
az container list --resource-group acispotdemo --output table
acispotclitest 컨테이너는 명령 출력에 표시되어서는 안 됩니다. 리소스 그룹에 다른 컨테이너가 없는 경우 표시되는 출력이 없습니다.
acispotdemo 리소스 그룹과 여기에 포함된 모든 리소스를 완료한 경우 az group delete 명령을 사용하여 삭제합니다.
az group delete --name acispotdemo
다음 단계
이 자습서에서는 Azure CLI를 사용하여 기본 할당량 및 제거 정책을 사용하여 Azure Container Instances에 스폿 컨테이너를 만들었습니다.