연습 - Azure Container Instances에 Docker 이미지 배포

완료됨

Azure Container Instance를 사용하면 Azure에서 Docker 이미지를 실행할 수 있습니다.

이전 연습에서 웹 앱을 로컬 Docker 이미지로 패키지하고 테스트했습니다. 이제 해당 연습의 출력을 사용하고 웹 애플리케이션을 전역적으로 사용하려고 합니다. 이를 위해 이미지를 Azure 컨테이너 인스턴스로 실행합니다.

이 연습에서는 이미지를 웹 앱용으로 다시 빌드하여 Azure Container Registry에 업로드하는 방법을 알아봅니다. Azure Container Instance 서비스를 사용하여 이미지를 실행할 것입니다.

중요

이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

컨테이너 레지스트리 만들기

  1. Azure 구독으로 Azure Portal에 로그인합니다.

  2. 리소스 메뉴 또는 페이지에서 리소스 만들기를 선택합니다. 리소스 만들기 창이 나타납니다.

  3. 메뉴에서 컨테이너를 선택한 다음, 컨테이너 레지스트리를 선택합니다.

    Screenshot that shows Create a resource with Container Registry.

    컨테이너 레지스트리 만들기 창이 나타납니다.

  4. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    프로젝트 세부 정보
    Subscription 리소스를 만들고 관리할 수 있는 Azure 구독을 선택합니다.
    Resource group learn-deploy-container-aci-rg 이름으로 새 리소스 그룹 만들기를 선택합니다. 선택한 이름을 이 모듈의 나머지 연습에서 사용합니다. 또한 모듈을 마친 후에는 이 리소스를 정리해야 합니다.
    인스턴스 세부 정보
    레지스트리 이름 원하는 이름을 선택합니다. 레지스트리 이름은 Azure 내에서 고유해야 하며, 5-50자의 영숫자만 포함해야 합니다.
    위치 본인에게 가까운 위치를 선택합니다.
    SKU 표준
  5. 검토 + 만들기를 선택합니다. 유효성 검사 통과 알림이 표시되면 만들기를 선택합니다. 컨테이너 레지스트리가 배포될 때까지 기다렸다가 계속 진행합니다.

  6. 리소스로 이동을 선택합니다. 컨테이너 레지스트리 창에는 컨테이너 레지스트리에 대한 필수 정보가 표시됩니다.

  7. 리소스 메뉴의 설정에서 액세스 키를 선택합니다. 컨테이너 레지스트리에 대한 액세스 키 창이 나타납니다.

  8. 관리 사용자 설정을 사용하지 않도록 설정한 경우 슬라이더를 선택하여 관리 사용자 액세스 키를 사용하도록 설정합니다. 컨테이너 레지스트리에 대한 사용자 이름 및 암호가 나타납니다.

  9. 컨테이너 레지스트리에 대한 레지스트리 이름, 로그인 서버, 사용자 이름암호를 기록해 둡니다.

    참고

    이 연습에서는 이미지를 업로드하고 레지스트리를 테스트할 수 있도록 관리자 계정 액세스를 사용하도록 설정합니다. 프로덕션 환경에서는 레지스트리가 예상대로 작동한다고 만족하는 즉시 관리 사용자 계정 액세스를 사용하지 않도록 설정하고 Microsoft Entra ID 보호를 사용해야 합니다.

    Screenshot of the Access keys details.

호텔 예약 시스템 앱의 이미지를 Azure Container Registry에 업로드

  1. 로컬 명령 프롬프트에서 다음 명령을 실행하여 <registry-name>을 컨테이너 레지스트리 이름으로 바꿔서 reservationsystem 이미지를 레지스트리 이름으로 태그를 표시합니다.

    docker tag reservationsystem:latest <registry-name>.azurecr.io/reservationsystem:latest
    
  2. docker image ls 명령을 실행하여 이미지에 태그가 올바르게 지정되었는지 확인합니다.

    docker image ls
    

    다음과 비슷하게 표시됩니다.

    REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
    reservationsystem                             latest              a56281e7038f        4 minutes ago       1.76GB
    <registry-name>.azurecr.io/reservationsystem  latest              a56281e7038f        4 minutes ago       1.76GB
    
  3. 명령 프롬프트에서 Azure Container Registry에 로그인합니다. docker login 명령을 사용하고, 앞에서 적어 둔 레지스트리의 로그인 서버를 지정합니다. 메시지가 표시되면 액세스 키의 사용자 이름 및 암호를 입력합니다.

    docker login <login-server>
    

    참고 항목

    애플리케이션이 Microsoft Entra ID에 등록되지 않았다는 디먼으로부터 오류 응답을 받을 수 있습니다. 이 연습 앞부분에서 설명한 것처럼 관리 사용자 액세스 키를 사용하도록 설정하여 배포를 테스트했습니다.

  4. 다음 명령을 입력하여 <registry-name>을 사용자의 레지스트리 이름으로 바꿔서 Azure Container Registry의 레지스트리에 이미지를 업로드합니다.

    docker push <registry-name>.azurecr.io/reservationsystem:latest
    

    업로드가 완료될 때까지 기다립니다. 이 프로세스는 이미지의 모든 개체를 리포지토리에 푸시하는 데 몇 분 정도 걸립니다. 각 개체가 Waiting에서 Preparing, Pushing, Pushed로 진행됨에 따라 진행 상황을 관찰할 수 있습니다.

레지스트리의 내용을 확인합니다.

이 연습의 나머지 부분은 Azure Portal로 돌아가서 수행합니다.

  1. Azure Portal에서 컨테이너 레지스트리로 돌아갑니다.

  2. 리소스 메뉴의 서비스에서 리포지토리를 선택합니다. 컨테이너 레지스트리에 대한 리포지토리 창이 표시됩니다.

  3. reservationsystem 리포지토리가 표시되는지 확인합니다. reservationsystem 리포지토리를 선택하고, 이 리포지토리에 latest 태그가 지정된 이미지가 있는지 확인합니다.

    Screenshot showing the repository and tagged reservation system container image in the registry.

Azure Container Instance를 사용하여 이미지 로드 및 실행

  1. Azure Portal에서 리소스 생성를 선택합니다. 리소스 만들기 창이 나타납니다.

  2. 리소스 메뉴에서 컨테이너를 선택한 다음, 컨테이너 인스턴스를 선택합니다.

    Screenshot showing Container Instances.

    컨테이너 인스턴스 만들기 창이 나타납니다.

    컨테이너 인스턴스를 구성하는 몇 가지 단계가 있습니다. 먼저 리소스 그룹 정보 및 컨테이너 세부 정보를 설정합니다. 그런 다음, 컨테이너의 네트워크 옵션을 구성하고 정책을 다시 시작합니다.

  3. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    프로젝트 세부 정보
    Subscription 리소스를 만들고 관리할 수 있는 기본 Azure 구독을 선택합니다.
    Resource group 기존 리소스 그룹 learn-deploy-container-aci-rg를 다시 사용합니다.
    컨테이너 세부 정보
    컨테이너 이름 hotelsysteminstance
    지역 기본 위치 사용
    이미지 원본 Docker Hub 또는 기타 레지스트리
    이미지 형식 프라이빗
    이미지 <registry-name>.azurecr.io/reservationsystem:latest
    이미지 레지스트리 로그인 서버 레지스트리의 로그인 서버 이름 입력
    이미지 레지스트리 사용자 이름 레지스트리의 사용자 이름 입력
    이미지 레지스트리 암호 레지스트리의 암호 입력
    OS 유형 Linux
    크기 기본 크기는 1vCPU, 1.5GiB 메모리, 0GPU로 설정된 상태로 둡니다.
  4. 다음: 네트워킹을 선택합니다.

  5. 네트워킹 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    네트워킹 유형 공용
    DNS 이름 레이블 컨테이너 URL의 일부로 사용되는 고유한 이름을 선택합니다.
    Ports
    포트 80
    포트 프로토콜 TCP
  6. 다음: 고급을 선택합니다.

  7. 고급 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    정책 다시 시작 항상
    환경 변수 모든 설정 비워 두기
    명령 재정의 비워 둠
  8. 검토 + 만들기를 선택합니다. 유효성 검사가 완료될 때까지 기다린 후 필요에 따라 오류를 수정합니다.

  9. 만들기를 선택합니다.

  10. 컨테이너 인스턴스를 만들었으면 리소스로 이동을 선택합니다. 컨테이너 인스턴스 창이 나타납니다.

  11. 개요 창에서 컨테이너 인스턴스의 정규화된 도메인 이름(FQDN)을 찾습니다.

    Screenshot that shows the New pane in Azure portal showing the Container properties with the FQDN highlighted.

  12. 웹 브라우저를 사용하여 URL http://FQDN/api/reservations/1로 이동합니다. FQDN을 컨테이너 인스턴스의 정규화된 도메인 이름으로 바꿉니다. 예를 들어 위의 스크린샷에 표시된 FQDN을 사용하는 것은 다음과 같습니다.

    http://hotel.southcentralus.azurecontainer.io/api/reservations/1
    

    웹 앱은 예약 1에 대한 세부 정보를 포함하는 JSON 개체를 사용하여 응답해야 합니다.

축하합니다! Azure Container Registry에 Docker 이미지를 업로드하고, Azure Container Instance 서비스를 사용하여 이미지를 실행했습니다.