빠른 시작: Azure PowerShell을 사용하여 Azure에서 컨테이너 인스턴스 배포

Azure Container Instances를 사용하여 Azure에서 서버리스 Docker 컨테이너를 간단하고 빠르게 실행합니다. Azure Kubernetes Service와 같은 풀 컨테이너 오케스트레이션 플랫폼이 필요하지 않을 경우 애플리케이션을 요청 시 컨테이너 인스턴스에 배포합니다.

이 빠른 시작에서는 Azure PowerShell을 사용하여 격리된 Windows 컨테이너를 배포하고 해당 애플리케이션을 정규화된 도메인 이름(FQDN) 및 포트로 사용 가능하게 합니다. 단일 배포 명령을 실행한 후 몇 초 내에 컨테이너에서 실행 중인 애플리케이션을 찾아볼 수 있습니다.

![브라우저에서 본 Azure Container Instances에 배포된 앱][./media/container-instances-quickstart/view-an-application-running-in-an-azure-container-instance.png]

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.

옵션 예제/링크
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. Azure Cloud Shell에 대한 사용 예제를 보여 주는 스크린샷
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. Azure Cloud Shell을 시작하는 단추입니다.
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. Azure Portal의 Cloud Shell 단추를 보여 주는 스크린샷

Azure Cloud Shell을 사용하려면:

  1. Cloud Shell을 시작합니다.

  2. 코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.

  3. Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.

  4. Enter를 선택하여 코드 또는 명령을 실행합니다.

PowerShell을 로컬로 설치하고 사용하도록 선택한 경우 이 자습서에서는 Azure PowerShell 모듈을 실행해야 합니다. Get-Module -ListAvailable Az을 실행하여 버전을 찾습니다. 업그레이드해야 하는 경우 Azure PowerShell 모듈 설치를 참조하세요. 또한 PowerShell을 로컬로 실행하는 경우 Connect-AzAccount를 실행하여 Azure와 연결해야 합니다.

리소스 그룹 만들기

모든 Azure 리소스와 마찬가지로 Azure 컨테이너 인스턴스는 리소스 그룹에 배포해야 합니다. 리소스 그룹을 사용하면 관련 Azure 리소스를 구성하고 관리할 수 있습니다.

먼저, 다음 New-AzResourceGroup 명령을 사용하여 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

컨테이너 인스턴스용 포트 만들기

열려는 하나 이상의 포트, DNS 이름 레이블 또는 둘 다를 지정하여 컨테이너를 인터넷에 공개할 수 있습니다. 이 빠른 시작에서는 공개적으로 연결할 수 있도록 DNS 이름 레이블이 있는 컨테이너를 배포합니다. 이 가이드에서는 두 가지를 모두 수행하지만 먼저 컨테이너 인스턴스가 사용할 포트 개체를 PowerShell에서 만들어야 합니다.

$port = New-AzContainerInstancePortObject -Port 80 -Protocol TCP

컨테이너 그룹 만들기

이제 리소스 그룹과 포트가 있으므로 Azure에서 인터넷에 노출되는 컨테이너를 실행할 수 있습니다. Azure PowerShell을 사용하여 컨테이너 인스턴스를 만들려면 먼저 컨테이너의 이름, 이미지 및 포트를 제공하여 ContainerInstanceObject를 만들어야 합니다. 이 빠른 시작에서는 공용 mcr.microsoft.com/azuredocs/aci-helloworld 이미지를 사용합니다.

New-AzContainerInstanceObject -Name myContainer -Image mcr.microsoft.com/azuredocs/aci-helloworld -Port @($port)

다음으로 New-AzContainerGroup cmdlet을 사용합니다. 컨테이너 그룹의 이름, 리소스 그룹의 이름, 컨테이너 그룹의 위치, 방금 만든 컨테이너 인스턴스, 운영 체제 형식 및 고유한 IP 주소 DNS 이름 레이블을 제공해야 합니다.

컨테이너 인스턴스를 시작하려면 다음과 유사한 명령을 실행합니다. 인스턴스를 만드는 Azure 지역 내에서 고유한 -IPAddressDnsNameLabel 값을 설정합니다. "DNS 이름 레이블을 사용할 수 없습니다"라는 오류 메시지가 표시되면 다른 DNS 이름 레이블을 사용해 보세요.

$containerGroup = New-AzContainerInstanceObject -ResourceGroupName myResourceGroup -Name myContainerGroup -Location EastUS -Container myContainer -OsType Windows -IPAddressDnsNameLabel aci-quickstart-win -IpAddressType Public -IPAddressPort @($port)

몇 초 내에 Azure로부터 응답을 받습니다. 컨테이너의 ProvisioningState는 처음에는 Creating(만드는 중)이지만 1-2분 내에 Succeeded(성공)으로 전환됩니다. Get-AzContainerGroup cmdlet을 사용하여 배포 상태를 확인합니다.

Get-AzContainerGroup -ResourceGroupName myResourceGroup -Name myContainerGroup

$containerGroup 개체를 인쇄하고 컨테이너의 프로비전 상태, FQDN(정규화된 도메인 이름) 및 IP 주소에 대한 테이블을 필터링할 수도 있습니다.

$containerGroup | Format-Table InstanceViewState, IPAddressFqdn, IPAddressIP

컨테이너의 프로비전 상태, FQDN 및 IP 주소가 cmdlet의 출력에 나타납니다.

PS Azure:\> Get-AzContainerGroup -ResourceGroupName myResourceGroup -Name myContainerGroup

ResourceGroupName        : myResourceGroup
Id                       : /subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroups/myContainerGroup
Name                     : myContainerGroup
Type                     : Microsoft.ContainerInstance/containerGroups
Location                 : eastus
Tags                     :
ProvisioningState        : Creating
Containers               : {myContainer}
ImageRegistryCredentials :
RestartPolicy            : Always
IpAddress                : 52.226.19.87
DnsNameLabel             : aci-demo-win
Fqdn                     : aci-demo-win.eastus.azurecontainer.io
Ports                    : {80}
OsType                   : Windows
Volumes                  :
State                    : Pending
Events                   : {}

컨테이너의 ProvisioningStateSucceeded(성공)이면 브라우저에서 해당 FQDN으로 이동합니다. 다음과 비슷한 웹 페이지가 표시됩니다. Docker 컨테이너에서 실행되는 애플리케이션이 Azure에 성공적으로 배포되었습니다.

![브라우저에서 Azure Container Instances에 배포된 앱 보기][./media/container-instances-quickstart/view-an-application-running-in-an-azure-container-instance.png]

리소스 정리

컨테이너 작업을 완료했으면 Remove-AzContainerGroup cmdlet을 사용하여 컨테이너를 제거합니다.

Remove-AzContainerGroup -ResourceGroupName myResourceGroup -Name myContainerGroup

다음 단계

이 빠른 시작에서는 공용 Docker Hub 리포지토리의 이미지로 Azure 컨테이너 인스턴스를 만들었습니다. 컨테이너 이미지를 빌드하고 프라이빗 Azure 컨테이너 레지스트리에서 배포하려면 Azure Container Instances 자습서로 계속 진행하세요.