이 ATA 프로젝트에서는 Azure에서 Docker가 어떻게 작동하는지 살펴볼 것입니다. 이 Azure Docker 튜토리얼에서는 Microsoft의 Azure Container Instance (ACI) 서비스에 대해 알아보게 될 것입니다.
Azure Container Instance는 Azure Docker 호스팅을 통한 호스팅된 Kubernetes 클러스터입니다. 이를 통해 Docker 이미지(Windows 및 Linux)를 배포하고 컨테이너로 실행할 수 있습니다. 각 Azure Docker 컨테이너는 독립적인 컨테이너로 실행되며 할당된 CPU 및 메모리를 사용합니다.
이 프로젝트에서는 Microsoft의 Azure 공용 클라우드에서 제공되는 ASP.NET 컨테이너 이미지를 기반으로 첫 번째 Azure Container Instance를 배포하고 실행하는 방법을 배울 것입니다.
이 프로젝트의 끝에는 Azure Container Instance 서비스에 의해 호스팅되는 Docker 컨테이너에서 실행되는 ASP.NET 웹사이트를 갖게 될 것입니다.
환경 및 지식 요구 사항
이 Azure Docker 튜토리얼에서 최대의 이점을 얻으려면 다음이 있어야 합니다:
- A local Windows 10 client with Docker Desktop installed.
- A Microsoft Azure account
- Azure Container Registry에 컨테이너를 배포할 수 있는 권한이 있는 Azure 계정에 액세스
- Windows Azure CLI가 설치되어 있어야 합니다. 여러분은 명령 줄에서 학습하게 됩니다.
- A beginner understanding of containers and Docker.
- A registered Docker ID.
이 Azure Docker 튜토리얼에서 선택된 예제가 마음에 들지 않는다면, 언제든지 Docker Hub에서 다른 컨테이너 이미지를 사용할 수 있습니다.
더 이상 말이 필요하지 않으니, 이 프로젝트를 구축하는 방법에 대해 들어가 봅시다!
Docker 컨테이너 실행
나중에 무언가 작동하지 않을 때 괴로움을 피하기 위해 항상 먼저 Docker Engine이 실행되고 있는지 확인하십시오. 이를 확인하려면 명령 프롬프트나 PowerShell 세션을 열고 docker info
를 실행하십시오.
아래에서 예상되는 출력 유형을 볼 수 있습니다.

Docker 컨테이너를 확인하려면 docker run hello-world
를 실행하십시오. 뒷단에서 docker
명령은 몇 가지 단계를 수행합니다:
- Windows 10 컴퓨터에서 로컬로 hello-word라는 이름의 컨테이너를 찾습니다.
- 찾지 못하면, 그런 다음에는 공개 Docker Hub 저장소로 이동하여 이름이 hello-world인 컨테이너의 최신 버전을 찾습니다.
- 컨테이너를 찾으면, 그런 다음에는 Docker Hub 저장소에서 다운로드합니다.
- 다운로드가 완료되면, 컨테이너가 시작되고 사용 중인 이미지 내에서 제공된 시작 명령을 실행합니다.
일부 예시 출력을 아래에서 볼 수 있습니다.

샘플 ASP.NET 컨테이너 시작
이제 Docker 컨테이너를 다운로드하고 실행하는 방법을 알게 되었으니, 이 프로젝트 내에서 작업할 컨테이너를 다운로드하고 실행하십시오. 이 Docker 컨테이너는 ASP.Net Core 웹 앱 이미지입니다.
이 Azure Docker 튜토리얼의 이미지를 다운로드하려면 다음 명령을 실행하십시오:
이 명령은 다음을 수행합니다:
- 로컬로 Docker 이미지를 사용할 수 없기 때문에, Docker는 Microsoft가 호스팅 한 다른 공개 컨테이너 레지스트리에서 aspnetapp이라는 컨테이너를 다운로드합니다. 이 레지스트리는 mcr.microsoft.com에 위치한 dotnet/core/samples 디렉토리에 있습니다. mcr.microsoft.com 컨테이너 레지스트리는 공개 Docker Hub과 유사하지만 Microsoft에 의해 유지보수되며 Microsoft 컨테이너 이미지만 호스팅합니다.
- 로컬 컴퓨터에서 컨테이너를 실행합니다.
- (-p 8000:80) – 컨테이너의 듣기 TCP 포트 80을 TCP 포트 8000에 매핑합니다. 이를 통해 로컬로 포트 8000에서 웹 앱에 액세스할 수 있습니다.
- (-it) – 컨테이너가 대화 형으로 시작되므로 시작할 때 즉시 콘솔로 이동됩니다.
- (
—rm
) – 컨테이너가 중지되면 제거됩니다.
아래에 예상할 수있는 출력이 표시됩니다.

6. 브라우저에서 실행 중인 이 컨테이너 응용 프로그램에 연결하려면 아래 URL로 이동하십시오. http://localhost:8000. 여기서 ASP.Net 샘플 웹 앱을 볼 수 있어야합니다.

Azure 컨테이너 레지스트리 (ACR) 인스턴스 생성
ASP.NET 컨테이너를 로컬 컴퓨터에 다운로드한 후에는 이제 Azure Docker 호스팅으로 마이그레이션하고 ACI를 사용하여이 컨테이너를 Azure에서 실행할 시간입니다. 이를 위해 데모 컨테이너를 Azure Container Registry (ACR)에 푸시합니다. ACR은 Azure 내에서 Docker 컨테이너를 직접 배포하고 실행할 수 있도록 하는 서비스입니다.
- Azure Portal에 로그인하십시오.
- 위쪽에 있는 터미널 아이콘을 클릭하여 Azure Cloud Shell을 시작하십시오.

3. 아래에 표시된대로 Bash 셸을 선택했는지 확인하십시오.

4. 아래의 az group create
명령을 사용하여 ACR을 넣을 Azure 리소스 그룹을 생성하십시오.

5. 이제 리소스 그룹 내에 ACR을 만들려면 az acr create
명령을 사용하십시오. 아래에는 Basic SKU를 사용하여 ACR을 생성하는 예제와 admin-enabled
매개변수가 true
로 설정된 것을 볼 수 있습니다. 이것은 리소스 관리를 나중에 수행할 수 있도록 true
로 설정됩니다.

–admin-enabled true
작업을 마치면 이제 리소스 그룹 내에서 실행 중인 ACR 인스턴스가 있어야 합니다. Azure Docker 호스팅이 도움이 됩니다!
로컬에서 ACR 인스턴스에 연결
- 이제 Azure Cloud Shell에서 로컬 Windows 컴퓨터로 이동하여 설정을 마무리해야 합니다.
- 로컬 컴퓨터에서 PowerShell 또는 관리자 권한이 있는 명령 프롬프트를 실행합니다. 저는 PowerShell을 사용할 것입니다.
- 자격 증명을 제공하기 위해
az login
명령을 실행하여 Azure CLI로 Azure에 인증합니다.

성공적으로 인증된 경우, 방금 인증한 사용자를 나타내는 일부 JSON 출력이 표시됩니다.

다음으로, 아래 명령을 사용하여 Azure Cloud Shell에서 방금 생성한 ACR 인스턴스에 인증합니다. 아래 예시에서는 nopacr1이라는 ACR 인스턴스에 연결하고 있으며, Azure 리소스 그룹은 NOPRG입니다.
도커 이미지 태그 업데이트
- Azure Docker 호스팅 또는 ACI에 로컬 도커 이미지를 ACR 인스턴스에 푸시할 준비가 되었습니다. 그러나 먼저 ACR 종속성을 충족해야 합니다. ACR 인스턴스에 푸시되는 모든 도커 이미지는 이미지 이름에 ACR 인스턴스의 이름이 포함되어야 합니다.

docker images
명령을 사용하여 도커 이미지 ID 번호 또는 이미지 이름을 찾습니다.

2. 아래와 같이 docker tag
명령을 실행하여 도커 이미지의 도커 이미지 태그를 업데이트합니다. 네이밍 규칙을 따르는 경우, ACR 이름으로 NOPACR1을 사용하고 태그를 nopacr1.azurecr.io로 정의합니다. 이미지 자체의 이름으로는 dotnetsample을 사용합니다.

3. docker images
명령을 다시 사용하여 태그가 적용되었는지 확인합니다. 이제 태그가 업데이트된 것을 확인할 수 있어야 합니다.
- 도커 이미지를 ACR 인스턴스에 업로드하고 확인합니다.

이제 로컬 이미지를 ACR 인스턴스로 업로드하려면 아래에 표시된 docker push
명령을 사용하여 ACR 인스턴스가 위치한 DNS 이름 라벨을 제공하십시오.

2. 업로드한 후에는 Azure Portal로 이동하여 ACR 인스턴스로의 푸시가 잘 이루어졌는지 확인하십시오. 이를 위해 모든 서비스로 이동한 다음 —> Azure 컨테이너 레지스트리를 선택하고 이전에 생성한 ACR 인스턴스를 선택하십시오.

3. 왼쪽의 블레이드 메뉴에서 서비스 섹션 아래에 있는 리포지토리를 클릭하십시오. 방금 푸시한 Docker 이미지가 여기에 표시될 것입니다.

4. 이미지를 클릭하면 버전과 기타 유용한 정보가 표시됩니다.
Azure 컨테이너 인스턴스 (ACI) 실행
- 이제 ACR 인스턴스를 만들고 ACR 이름을 참조로 사용하여 Docker 컨테이너 이미지에 태그를 지정하고 이미지를 ACR 인스턴스에 푸시했습니다. 이제 ACR 인스턴스에 저장된 Docker 이미지를 실행하기 위해 Azure 컨테이너 인스턴스 (ACI)를 사용할 때입니다.

이전 단계에서 계속하려면 latest 옆의 …를 클릭하고 인스턴스 실행을 선택하십시오. 이렇게 하면 컨테이너 인스턴스 생성 블레이드가 열립니다.
- 2. 다음 정보를 사용하여 컨테이너 인스턴스 생성 상자의 필드를 완성하십시오:
- 컨테이너 이름 – 이 실행 중인 컨테이너에 사용할 이름
- OS 유형 – Linux (이것은 소스 컨테이너에 따라 다릅니다. 이 프로젝트에서 동일한 컨테이너를 사용하는 경우 Windows일 수도 있습니다.)
- 구독 – Azure 구독 여부
- 리소스 그룹 – 컨테이너 인스턴스를 추가할 기존 또는 새로운 Azure 리소스 그룹
위치 – 리소스 그룹을 기반으로합니다

이 Azure Docker 자습서 ASP.NET 컨테이너의 경우, 다른 모든 설정은 변경하지 않고 두면 됩니다. 프로덕션 환경에서는 컨테이너가 실행 중인 내용에 따라 이러한 설정을 변경해야 할 수 있습니다.

3. 확인을 눌러 컨테이너 인스턴스를 만듭니다.
4. 컨테이너 인스턴스가 배포되면 아래 예제와 같은 페이지가 표시됩니다.

5. 배포가 완료되면 모든 서비스로 이동하여 포털에서 ACI를 엽니다. 여기서 방금 만든 Azure 컨테이너 인스턴스 (ACI)로 이동합니다. 아래에 인스턴스가 표시됩니다.

6. 오른쪽 상단의 IP 주소를 복사하여 웹 브라우저에 붙여 넣습니다. 샘플 ASP.NET 웹 앱이 Azure 컨테이너 인스턴스 (ACI)에서 로드되어 아래와 같은 웹 페이지가 표시됩니다.
이 컨테이너를 사용하지 않는 경우 az container delete
명령을 사용하여 컨테이너를 제거할 수 있습니다.
결론