다음을 통해 공유


빠른 시작: Azure PowerShell을 사용하여 프라이빗 컨테이너 레지스트리 만들기

Azure Container Registry는 컨테이너 이미지 및 관련 아티팩트를 빌드, 저장 및 관리하기 위한 프라이빗 레지스트리 서비스입니다. 이 빠른 시작에서는 Azure PowerShell을 로컬로 사용하여 Azure Container Registry 인스턴스를 만듭니다. 그런 다음 Docker CLI를 사용하여 hello-world 컨테이너 이미지를 끌어오고, hello-world 컨테이너 이미지에 태그를 지정하여 새 컨테이너 이미지를 만들고, 새 컨테이너 이미지를 컨테이너 레지스트리에 푸시하고, 로컬 컨테이너 이미지를 삭제하고, 마지막으로 레지스트리에서 이미지를 끌어와 실행합니다.

필수 조건

참고 항목

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

이 빠른 시작에서는 Azure PowerShell 모듈이 필요합니다. 설치된 버전을 확인하려면 Get-Module -ListAvailable Az 명령을 실행합니다. 설치 또는 업그레이드해야 하는 경우 Azure PowerShell 모듈 설치를 참조하세요.

또한 Docker가 로컬에 설치되어 있어야 합니다. Docker는 macOS, WindowsLinux 시스템용 패키지를 제공합니다.

Azure Cloud Shell에는 필요한 Docker 구성 요소(dockerd 데몬) 중 일부가 없기 때문에 이 빠른 시작에 Cloud Shell을 사용할 수 없습니다.

Azure에 로그인

Connect-AzAccount 명령을 사용하여 Azure 구독에 로그인하고 화면의 지시를 따릅니다.

Connect-AzAccount

리소스 그룹 만들기

Azure에 인증되었으면 New-AzResourceGroup을 사용하여 리소스 그룹을 만듭니다. 리소스 그룹은 Azure 리소스를 배포하고 관리하는 논리적 컨테이너입니다.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

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

다음으로, New-AzContainerRegistry 명령을 사용하여 새 리소스 그룹에 컨테이너 레지스트리를 만듭니다.

레지스트리 이름은 Azure 내에서 고유해야 하며, 5-50자의 영숫자만 포함해야 합니다. 다음 예에서는 "mycontainerregistry"라는 레지스트리를 만듭니다. 다음 명령에서 mycontainerregistry를 바꾼 후 실행하여 레지스트리를 만듭니다.

$registry = New-AzContainerRegistry -ResourceGroupName "myResourceGroup" -Name "mycontainerregistry" -EnableAdminUser -Sku Standard -Location EastUS

이 빠른 시작에서는 대부분의 Azure Container Registry 워크플로에 충분한 표준 레지스트리를 만듭니다. 스토리지 및 이미지 처리량을 늘리려면 다른 계층을 선택하고 프라이빗 엔드포인트를 사용한 연결과 같은 기능을 선택합니다. 사용 가능한 서비스 계층(SKU)에 대한 자세한 내용은 컨테이너 레지스트리 서비스 계층을 참조하세요.

레지스트리에 로그인

컨테이너 이미지를 푸시하고 풀하려면 Connect-AzContainerRegistry cmdlet을 사용하여 레지스트리에 로그인해야 합니다. 다음 예제에서는 Connect-AzAccount cmdlet을 사용하여 Azure에 인증할 때 로그인한 것과 동일한 자격 증명을 사용합니다.

참고 항목

다음 예제에서 $registry.Name 값은 정규화된 레지스트리 이름이 아닌 리소스 이름입니다.

Connect-AzContainerRegistry -Name $registry.Name

완료되면 이 명령은 Login Succeeded를 반환합니다.

레지스트리에 이미지 푸시

Azure Container Registry에 이미지를 푸시하려면 먼저 이미지가 있어야 합니다. 로컬 컨테이너 이미지가 아직 없는 경우 다음 docker pull 명령을 실행하여 기존 퍼블릭 이미지를 끌어옵니다. 이 예제에서는 Microsoft Container Registry에서 hello-world 이미지를 끌어옵니다.

docker pull mcr.microsoft.com/hello-world

레지스트리에 이미지를 푸시하려면 먼저 레지스트리 로그인 서버의 정규화된 이름과 함께 docker 태그 를 사용하여 태그를 지정해야 합니다.

  • 고유한 DNS 이름 해시가 포함된 DNL(도메인 이름 레이블) 보호 레지스트리의 로그인 서버 이름 형식은 다음과 같습니다 mycontainerregistry-abc123.azurecr.io.
  • DNL 옵션을 사용하여 만든 레지스트리의 Unsecure 로그인 서버 이름 형식은 다음과 같습니다 mycontainerregistry.azurecr.io.

예를 들어 레지스트리가 DNL 범위로 Tenant Reuse 만들어진 경우 로그인 서버는 DNS 이름에 해시가 있는 것처럼 mycontainerregistry-abc123.azurecr.io 보일 수 있습니다. DNL 옵션을 사용하여 레지스트리를 Unsecure 만든 경우 로그인 서버는 해시 없이 mycontainerregistry.azurecr.io와 같이 보일 것입니다.

레지스트리를 만드는 동안 DNL 옵션 및 DNS 이름에 미치는 영향에 대한 자세한 내용은 빠른 시작 - 포털에서 레지스트리 만들기를 참조하세요.

예: 푸시 전에 이미지 태그 지정

레지스트리의 로그인 서버를 사용하여 docker 태그 명령을 사용하여 이미지에 태그를 지정합니다.

비 DNL 레지스트리에 대한 이미지 태그 지정:

docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1

DNL 사용 레지스트리에 대한 이미지 태그 지정:

docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.azurecr.io/hello-world:v1

마지막으로 docker push를 사용하여 레지스트리 인스턴스로 이미지를 푸시합니다. <login-server>를 레지스트리 인스턴스의 로그인 서버 이름으로 바꿉니다. 이 예제에서는 이미지를 포함하는 hello-world:v1 리포지토리를 만듭니다.

docker push <login-server>/hello-world:v1

이미지를 컨테이너 레지스트리에 푸시한 후에는 로컬 Docker 환경에서 hello-world:v1 이미지를 제거합니다. (이 docker rmi 명령은 Azure 컨테이너 레지스트리의 hello-world 리포지토리에서 이미지를 제거하지 않습니다.)

docker rmi <login-server>/hello-world:v1

레지스트리에서 이미지 실행

이제 hello-world:v1을 사용하여 컨테이너 레지스트리에서 컨테이너 이미지를 끌어와서 실행할 수 있습니다.

docker run <login-server>/hello-world:v1  

예제 출력:

Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1

Hello from Docker!
This message shows that your installation appears to be working correctly.

[...]

리소스 정리

이 빠른 시작에서 만든 리소스가 더 이상 필요 없으면 Remove-AzResourceGroup 명령을 사용하여 리소스 그룹, 컨테이너 레지스트리 및 저장된 컨테이너 이미지를 제거합니다.

Remove-AzResourceGroup -Name myResourceGroup

다음 단계

이 빠른 시작에서는 Azure PowerShell을 사용하여 Azure Container Registry 인스턴스를 로컬로 만들고, hello-world 컨테이너 이미지를 끌어오고, hello-world 이미지에 태그를 지정하여 새 컨테이너 이미지를 만들고, 새 컨테이너 이미지를 컨테이너 레지스트리에 푸시하고, 로컬 컨테이너 이미지를 삭제하고, 마지막으로 레지스트리에서 이미지를 끌어와 실행했습니다. Azure Container Registry 자습서를 계속 진행하여 ACR에 대해 자세히 알아보세요.