빠른 시작: Docker CLI를 사용하여 Azure에 컨테이너 인스턴스 배포

Azure Container Instances를 사용하여 Azure에서 서버리스 Docker 컨테이너를 간단하고 빠르게 실행합니다. 클라우드 네이티브 앱을 개발할 때 주문형 컨테이너 인스턴스에 배포하고 로컬 개발에서 클라우드 배포로 원활하게 전환하려고 합니다.

이 빠른 시작에서는 기본 Docker CLI 명령을 사용하여 Docker 컨테이너를 배포하고 Azure Container Instances에서 해당 애플리케이션을 사용할 수 있도록 합니다. 이 기능은 Docker와 Azure 간의 통합을 통해 사용하도록 설정됩니다. docker run 명령을 실행한 후 몇 초 내에 컨테이너에서 실행 중인 애플리케이션을 찾아볼 수 있습니다.

App deployed using Azure Container Instances viewed in browser

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

이 빠른 시작에서는 Windows 또는 macOS에서 사용할 수 있는 Docker Desktop 버전 2.3.0.5 이상이 필요합니다. 또는 Linux용 Docker ACI 통합 CLI를 설치합니다.

Important

Azure Container Instances의 모든 기능이 지원되는 것은 아닙니다. aci-integration-beta GitHub 리포지토리에서 문제를 만들어 Docker Azure 통합에 대한 피드백을 제공합니다.

Azure 컨텍스트 만들기

Docker 명령을 사용하여 Azure Container Instances에서 컨테이너를 실행하려면 먼저 Azure에 로그인합니다.

docker login azure

메시지가 표시되면 Azure 자격 증명을 입력하거나 선택합니다.

docker context create aci를 실행하여 ACI 컨텍스트를 만듭니다. 이 컨텍스트는 사용자가 컨테이너 인스턴스를 만들고 관리할 수 있도록 Docker를 Azure 구독 및 리소스 그룹과 연결합니다. 예를 들어, myacicontext라는 컨텍스트를 만듭니다.

docker context create aci myacicontext

메시지가 표시되면 Azure 구독 ID를 선택하고 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 새 리소스 그룹을 선택하는 경우 시스템에서 생성된 이름으로 만들어집니다. 모든 Azure 리소스와 마찬가지로 Azure 컨테이너 인스턴스는 리소스 그룹에 배포해야 합니다. 리소스 그룹을 사용하면 관련 Azure 리소스를 구성하고 관리할 수 있습니다.

docker context ls을(를) 실행하여 Docker 컨텍스트에 ACI 컨텍스트를 추가했는지 확인합니다.

docker context ls

컨테이너 만들기

Docker 컨텍스트를 만들면 Azure에서 컨테이너를 만들 수 있습니다. 이 빠른 시작에서는 공용 mcr.microsoft.com/azuredocs/aci-helloworld 이미지를 사용합니다. 이 이미지는 고정 HTML 페이지를 제공하는 Node.js로 작성된 작은 웹앱을 패키징합니다.

먼저 ACI 컨텍스트로 변경합니다. 모든 후속 Docker 명령은 이 컨텍스트에서 실행됩니다.

docker context use myacicontext

다음 docker run 명령을 실행하여 인터넷에 노출된 포트 80을 사용하여 Azure 컨테이너 인스턴스를 만듭니다.

docker run -p 80:80 mcr.microsoft.com/azuredocs/aci-helloworld

성공적인 배포를 위한 샘플 출력:

[+] Running 2/2
 ⠿ hungry-kirch            Created                                                                               5.1s
 ⠿ single--container--aci  Done                                                                                 11.3s
hungry-kirch

docker ps을(를) 실행하여 공용 IP 주소를 포함한 실행 중인 컨테이너에 대한 세부 정보를 가져옵니다.

docker ps

샘플 출력은 공용 IP 주소를 보여 줍니다(이 경우 52.230.225.232).

CONTAINER ID        IMAGE                                        COMMAND             STATUS              PORTS
hungry-kirch        mcr.microsoft.com/azuredocs/aci-helloworld                       Running             52.230.225.232:80->80/tcp

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

App deployed using Azure Container Instances viewed in browser

컨테이너 로그 끌어오기

컨테이너 또는 컨테이너가 실행되는 애플리케이션의 문제를 해결해야 하거나 해당 문제에 대한 출력만 보려는 경우 컨테이너 인스턴스의 로그를 확인하면서 시작합니다.

예를 들어, ACI 컨텍스트에서 hungry-kirch 컨테이너의 로그를 보려면 docker logs 명령을 실행합니다.

docker logs hungry-kirch

출력은 컨테이너의 로그를 표시하며, 브라우저에서 애플리케이션을 볼 때 생성된 HTTP GET 요청을 표시해야 합니다.

listening on port 80
::ffff:10.240.255.55 - - [07/Jul/2020:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [07/Jul/2020:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [07/Jul/2020:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

리소스 정리

컨테이너 작업을 완료하면 docker rm을(를) 실행하여 제거합니다. 이 명령은 Azure Container Instance를 중지하고 삭제합니다.

docker rm hungry-kirch

다음 단계

이 빠른 시작에서는 Docker와 Azure 간의 통합을 사용하여 공용 이미지에서 Azure 컨테이너 인스턴스를 만들었습니다. Docker 설명서의 통합 시나리오에 대해 자세히 알아보세요.

Visual Studio Code용 Docker 확장은 컨테이너, 이미지 및 컨텍스트를 개발, 실행 및 관리하는 통합 환경에 사용할 수도 있습니다.

Azure 도구를 사용하여 컨테이너 인스턴스를 만들고 관리하려면 Azure CLI, Azure PowerShell, Azure PortalAzure Resource Manager 템플릿을 사용하여 다른 빠른 시작을 참조하세요.

Docker Compose를 사용하여 다중 컨테이너 애플리케이션을 로컬로 정의하고 실행한 다음, Azure Container Instances로 전환하려면 다음 자습서로 계속 진행하세요.