Azure Container Instances에 Docker 이미지 배포

완료됨

Azure Container Instance는 주문형 Docker 이미지를 로드하고 실행하는 서비스입니다. Azure Container Instance 서비스는 Docker Hub나 Azure Container Registry 같은 레지스트리의 이미지를 검색할 수 있습니다.

조직에서는 Azure를 사용하여 웹앱을 실행하려 합니다. 이러한 이유로 Azure Container Registry에 이미지를 저장하고, Azure Container Instance 서비스를 사용하여 이미지를 실행하는 것이 적절합니다.

이 단원에서는 Docker 이미지를 Azure Container Registry에 업로드하는 방법을 알아보겠습니다. 그런 다음, Azure Container Instance 서비스를 사용하여 이미지를 실행합니다.

Azure Container Registry를 사용하여 컨테이너 저장

Azure Container Registry는 Azure에서 제공하는 서비스를 호스트하는 레지스트리입니다. 사용자가 만드는 각 Azure Container Registry 리소스는 고유한 URL이 있는 별도의 레지스트리입니다. 이러한 레지스트리는 프라이빗이므로 이미지를 푸시 또는 풀하려면 인증이 필요합니다. Azure Container Registry는 클라우드에서 실행되며, 다른 Azure 서비스와 비슷한 수준의 확장성 및 가용성을 제공합니다.

레지스트리는 Azure Portal 또는 Azure CLI(명령줄 인터페이스)를 사용하여 만들 수 있습니다. Azure Portal의 Cloud Shell 또는 Azure CLI의 로컬 설치를 사용할 수 있습니다. 레지스트리를 만들기 전에 리소스 그룹을 만들어야 합니다. 리소스 그룹을 만들 때 가장 가까운 지역을 선택하는 것이 좋습니다. 이 예제에서는 리소스 그룹의 이름이 mygroup(이)고 위치는 미국 서부입니다.

다음과 같은 명령을 실행할 필요가 없습니다. 이 작업은 다음 단원에서 하겠습니다.

참고

컨테이너에 고유한 이름이 필요합니다. 여기에서 이름이 이미 사용되고 있는지 확인할 수 있습니다.

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

여러 SKU는 다양한 수준의 확장성 및 스토리지를 제공합니다.

Azure Container Registry 리포지토리는 프라이빗이므로 인증되지 않은 액세스를 지원하지 않습니다. Azure Container Registry 리포지토리에서 이미지를 끌어오려면 docker login 명령을 사용하고 레지스트리에 대한 로그인 서버 URL을 지정합니다. Azure Container Registry의 레지스트리에 대한 로그인 서버 URL은 <registry_name>.azurecr.io 형식입니다.

docker login myregistry.azurecr.io

Docker 로그인 시 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 이 정보를 찾으려면 Azure Portal로 이동하여 레지스트리의 액세스 키를 조회하거나 다음 명령을 실행합니다.

az acr credential show --name myregistry --resource-group mygroup

docker push 명령을 사용하여 로컬 컴퓨터의 이미지를 Docker 레지스트리로 푸시합니다. 이미지를 푸시하기 전에 Docker 레지스트리에서 만드는 리포지토리 및 태그를 지정하는 이미지의 별칭을 만들어야 합니다. 리포지토리 이름은 *<login_server>/<image_name>:<tag/> 형식이어야 합니다. docker tag 명령을 사용하여 이 작업을 수행합니다. 다음은 단원 4에서 설명한 reservationsystem 이미지의 별칭을 만드는 예제입니다.

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

docker image ls 명령을 실행하면 이미지에 대한 두 개의 항목이 표시되는데, 하나는 원래 이름을 사용하고 다른 하나는 새 별칭을 사용합니다.

태그 명령을 실행한 후 다음 명령을 사용하여 Azure Container Registry의 레지스트리에 이미지를 업로드할 수 있습니다.

docker push myregistry.azurecr.io/reservationsystem:v2

다음 명령으로 레지스트리의 리포지토리를 나열하여 이미지가 올바르게 업로드되었는지 확인합니다.

az acr repository list --name myregistry --resource-group mygroup

acr repository show 명령을 사용하여 레지스트리의 이미지를 나열할 수도 있습니다.

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

참고

리포지토리의 각 이미지에 대한 태그가 적어도 2개 이상 보일 것입니다. 하나는 acr build 명령에서 지정한 값(위 예제의 v1)이고, 다른 하나는 latest입니다. 사용자가 이미지를 다시 빌드할 때마다 Azure Container Registry는 자동으로 가장 최신 버전 이미지의 별칭으로 latest 태그를 만듭니다.

Azure 컨테이너 인스턴스를 사용하여 이미지 실행

Azure Container Instance 서비스는 Azure Container Registry의 이미지를 로드하여 Azure에서 실행할 수 있습니다.

az container create 명령으로 컨테이너 인스턴스를 만들고 이미지를 실행합니다. registry-usernameregistry-password 매개 변수에서 레지스트리의 사용자 이름과 암호를 입력합니다. 인스턴스에 IP 주소가 할당됩니다. 인스턴스에 액세스할 때 이 IP 주소를 사용합니다. 사용자에게 익숙한 레이블을 통해 인스턴스를 참조하고 싶은 경우 필요에 따라 DNS 이름을 지정할 수도 있습니다. Azure Container Registry 서비스(azurecr.io)의 레지스트리(myregistry)를 참조하는 이미지를 URL로 지정합니다. Docker 허브 또는 다른 레지스트리를 사용하는 경우 이 URL을 해당 레지스트리의 이미지 URL로 바꿉니다.

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

Azure는 사용자가 지정한 DNS 레이블 기반의 도메인 이름으로 인스턴스에 호스팅합니다. 인스턴스의 정규화된 도메인 이름은 인스턴스의 IP 주소를 쿼리하여 찾을 수 있습니다.

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

웹 브라우저를 사용하여 애플리케이션에 액세스할 수 있습니다. 이 명령에서 반환된 URL로 이동할 수 있습니다. 다음 단원에서 방법을 알아봅니다.