다음을 통해 공유


Azure Container Registry의 아티팩트 캐시

아티팩트 캐시 기능을 사용하면 사용자가 프라이빗 컨테이너 레지스트리에서 컨테이너 이미지를 캐시할 수 있습니다. 아티팩트 캐시는 기본, 표준프리미엄 서비스 계층으로 제공됩니다.

아티팩트 캐시는 퍼블릭 및 프라이빗 리포지토리 모두에 대한 캐싱 솔루션을 제공하여 컨테이너 이미지 관리를 향상시킵니다.

아티팩트 캐시는 ACR(Azure Container Registry)을 통해 더 빠르고 안정적인 풀(pull) 작업을 제공하며, 고가용성 및 속도 이미지 풀을 위한 지역 복제 및 가용성 영역 지원과 같은 기능을 활용합니다.

아티팩트 캐시를 사용하면 사용자가 방화벽 구성 및 규정 준수 표준에 원활하게 부합할 수 있도록 개인 네트워크를 통해 캐시된 레지스트리에 액세스할 수 있습니다.

아티팩트 캐시는 공용 레지스트리에 의해 부과된 끌어오기 제한 문제를 해결합니다. 사용자는 업스트림 원본 자격 증명으로 캐시 규칙을 인증하는 것이 좋습니다. 그런 다음 속도 제한을 완화하는 데 도움이 되도록 로컬 ACR에서 이미지를 끌어옵니다.

용어

  • 캐시 규칙 - 캐시 규칙은 지원되는 리포지토리의 아티팩트를 캐시로 끌어오기 위해 만들 수 있는 규칙입니다.

    • 캐시 규칙은 네 부분으로 구성됩니다.

      • 규칙 이름 - 캐시 규칙의 이름입니다. 예: Hello-World-Cache.

      • 원본 - 원본 레지스트리의 이름입니다.

      • 리포지토리 경로 - 캐시하려는 아티팩트를 찾고 검색하기 위한 리포지토리의 원본 경로입니다. 예: docker.io/library/hello-world.

      • 새 ACR 리포지토리 네임스페이스 - 아티팩트를 저장하기 위한 새 리포지토리 경로의 이름입니다. 예: hello-world. 리포지토리는 ACR 인스턴스 내에 이미 존재할 수 없습니다.

  • 자격 증명

    • 자격 증명은 원본 레지스트리에 대한 사용자 이름과 암호 집합입니다. 공용 또는 프라이빗 리포지토리를 인증하려면 자격 증명이 필요합니다. 자격 증명은 네 부분으로 구성됩니다.

      • 자격 증명 - 자격 증명의 이름입니다.

      • 원본 레지스트리 로그인 서버 - 원본 레지스트리의 로그인 서버입니다.

      • 원본 인증 - 자격 증명을 저장할 키 자격 증명 모음 위치입니다.

      • 사용자 이름 및 암호 비밀 - 사용자 이름과 암호가 포함된 비밀입니다.

제한 사항

  • 캐시는 사용 가능한 컨테이너 이미지에서 하나 이상의 이미지 끌어오기가 완료된 후에만 발생합니다. 사용 가능한 모든 새 이미지에 대해 새 이미지 끌어오기가 완료되어야 합니다. 아티팩트 캐시는 새 태그를 사용할 수 있을 때 이미지의 새 태그를 자동으로 풀하지 않습니다. 로드맵에는 있지만 이번 릴리스에서는 지원되지 않습니다.

  • 아티팩트 캐시는 1,000개의 캐시 규칙만 지원합니다.

업스트림 지원

아티팩트 캐시는 현재 다음 업스트림 레지스트리를 지원합니다.

Warning

고객은 Docker 허브에서 원본 콘텐츠에 대해 자격 증명 집합을 생성해야 합니다.

업스트림 레지스트리 지원 가용성
Docker Hub 인증된 끌어오기만 지원합니다. Azure CLI, Azure Portal
Microsoft 아티팩트 레지스트리 인증되지 않은 끌어오기만 지원합니다. Azure CLI, Azure Portal
AWS ECR(Elastic Container Registry) 공용 갤러리 인증되지 않은 끌어오기만 지원합니다. Azure CLI, Azure Portal
GitHub Container Registry 인증된 끌어오기와 인증되지 않은 끌어오기를 모두 지원합니다. Azure CLI, Azure Portal
Quay 인증된 끌어오기와 인증되지 않은 끌어오기를 모두 지원합니다. Azure CLI, Azure Portal
registry.k8s.io 인증된 끌어오기와 인증되지 않은 끌어오기를 모두 지원합니다. Azure CLI
Google 컨테이너 레지스트리 인증된 끌어오기와 인증되지 않은 끌어오기를 모두 지원합니다. Azure CLI

와일드카드

와일드카드는 별표(*)를 사용하여 컨테이너 이미지 레지스트리 내의 여러 경로를 일치시킵니다. 아티팩트 캐시는 현재 다음 와일드카드를 지원합니다.

참고 항목

대상 리포지토리 => 원본 리포지토리의 캐시 규칙 매핑입니다.

레지스트리 수준 와일드카드

레지스트리 수준 와일드카드를 사용하면 업스트림 레지스트리의 모든 리포지토리를 캐시할 수 있습니다.

캐시 규칙 매핑 예시
contoso.azurecr.io/* => mcr.microsoft.com/* ACR의 모든 이미지를 MCR로 매핑합니다. contoso.azurecr.io/myapp/image1 => mcr.microsoft.com/myapp/image1
contoso.azurecr.io/myapp/image2 => mcr.microsoft.com/myapp/image2

리포지토리 수준 와일드카드

리포지토리 수준 와일드카드를 사용하면 업스트림 레지스트리 매핑에서 리포지토리 접두사로 모든 리포지토리를 캐시할 수 있습니다.

캐시 규칙 매핑 예시
contoso.azurecr.io/dotnet/* => mcr.microsoft.com/dotnet/* ACR의 특정 리포지토리를 MCR의 해당 리포지토리에 매핑합니다. contoso.azurecr.io/dotnet/sdk => mcr.microsoft.com/dotnet/sdk
contoso.azurecr.io/dotnet/runtime => mcr.microsoft.com/dotnet/runtime
contoso.azurecr.io/library/dotnet/* => mcr.microsoft.com/dotnet/*
contoso.azurecr.io/library/python/* => docker.io/library/python/*
ACR의 특정 리포지토리를 다양한 업스트림 레지스트리의 리포지토리에 매핑합니다. contoso.azurecr.io/library/dotnet/app1 => mcr.microsoft.com/dotnet/app1
contoso.azurecr.io/library/python/app3 => docker.io/library/python/app3

와일드카드 기반 캐시 규칙의 제한 사항

와일드카드 캐시 규칙은 별표(*)를 사용하여 컨테이너 이미지 레지스트리 내의 여러 경로를 일치시킵니다. 이러한 규칙은 다른 와일드카드 캐시 규칙과 겹칠 수 없습니다. 즉, 특정 레지스트리 경로에 대한 와일드카드 캐시 규칙이 있는 경우 이와 겹치는 다른 와일드카드 규칙을 추가할 수 없습니다.

다음은 중복되는 규칙의 몇 가지 예입니다.

예제 1:

기존 캐시 규칙: contoso.azurecr.io/* => mcr.microsoft.com/*
새 캐시 추가 중: contoso.azurecr.io/library/* => docker.io/library/*

대상 리포지토리 경로 contoso.azurecr.io/library/*가 기존 와일드카드 규칙 contoso.azurecr.io/*와 겹치기 때문에 새 캐시 규칙 추가가 차단됩니다.

예 2:

기존 캐시 규칙: contoso.azurecr.io/library/* =>mcr.microsoft.com/library/*
새 캐시 추가 중: contoso.azurecr.io/library/dotnet/* =>docker.io/library/dotnet/*

대상 리포지토리 경로 contoso.azurecr.io/library/dotnet/*가 기존 와일드카드 규칙 contoso.azurecr.io/library/*와 겹치기 때문에 새 캐시 규칙 추가가 차단됩니다.

정적/고정 캐시 규칙에 대한 제한 사항

정적 또는 고정 캐시 규칙은 더 구체적이며 와일드카드를 사용하지 않습니다. 와일드카드 기반 캐시 규칙과 겹칠 수 있습니다. 캐시 규칙이 고정 리포지토리 경로를 지정하는 경우 와일드카드 기반 캐시 규칙과 겹칠 수 있습니다.

예제 1:

기존 캐시 규칙: contoso.azurecr.io/* =>mcr.microsoft.com/*
새 캐시 추가 중: contoso.azurecr.io/library/dotnet =>docker.io/library/dotnet

contoso.azurecr.io/library/dotnet은 정적 경로이고 와일드카드 캐시 규칙 contoso.azurecr.io/*와 겹칠 수 있으므로 새 캐시 규칙의 추가가 허용됩니다.

아티팩트 캐시 사용 - Azure CLI

다음 단계에 따라 Azure CLI를 사용하여 인증을 사용하거나 사용하지 않고 Azure Container Registry에서 아티팩트 캐시를 사용하도록 설정할 수 있습니다.

필수 조건

  • Azure Cloud Shell 또는 Azure CLI의 로컬 설치를 사용하여 이 문서의 명령 예제를 실행할 수 있습니다. 로컬로 사용하려는 경우 2.46.0 이상 버전이 필요합니다. 버전을 찾으려면 az --version을 실행합니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
  • 자격 증명을 저장할 기존 Key Vault가 있습니다. Key Vault에서 자격 증명 만들기 및 저장에 대해 자세히 알아봅니다.
  • Key Vault에서 비밀을 설정하고 검색할 수 있습니다. Key Vault에서 비밀 설정 및 검색에 대해 자세히 알아봅니다.

자격 증명 없이 캐시 규칙을 구성하고 만듭니다.

  1. az acr Cache create 명령을 실행하여 캐시 규칙을 만듭니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명 없이 캐시 규칙을 만듭니다.
    az acr Cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu-
    
  2. 캐시 규칙을 표시하려면 az acr Cache show 명령을 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 캐시 규칙을 표시합니다.
     az acr Cache show -r MyRegistry -n MyRule
    

자격 증명 만들기

자격 증명을 구성하기 전에 Azure KeyVault에 비밀을 만들고 저장하고 Key Vault에서 비밀을 검색해야 합니다. Key Vault에서 자격 증명 만들기 및 저장에 대해 자세히 알아봅니다. 그리고 Key Vault에서 비밀 설정 및 검색..

  1. 자격 증명을 만들려면 az acr credential set create 명령을 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명을 만듭니다.
    az acr credential-set create 
    -r MyRegistry \
    -n MyDockerHubCredSet \
    -l docker.io \ 
    -u https://MyKeyvault.vault.azure.net/secrets/usernamesecret \
    -p https://MyKeyvault.vault.azure.net/secrets/passwordsecret
    
  2. 자격 증명 집합의 사용자 이름 또는 암호 KV 비밀 ID를 업데이트하려면 az acr credential set update를 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명의 사용자 이름 또는 암호 KV 비밀 ID를 업데이트합니다.
    az acr credential-set update -r MyRegistry -n MyDockerHubCredSet -p https://MyKeyvault.vault.azure.net/secrets/newsecretname
    
  3. 자격 증명을 표시하려면 az acr credential-set show를 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명 집합을 표시합니다.
    az acr credential-set show -r MyRegistry -n MyDockerHubCredSet
    

자격 증명을 사용하여 캐시 규칙 구성 및 만들기

  1. az acr cache create 명령을 실행하여 캐시 규칙을 만듭니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명을 사용하여 캐시 규칙을 만듭니다.
    az acr cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu -c MyDockerHubCredSet
    
  2. 캐시 규칙에 대한 자격 증명을 업데이트하려면 az acr cache update 명령을 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 캐시 규칙의 자격 증명을 업데이트합니다.
    az acr cache update -r MyRegistry -n MyRule -c NewCredSet
    
    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 기존 캐시 규칙에서 자격 증명을 제거합니다.
    az acr cache update -r MyRegistry -n MyRule --remove-cred-set
    
  3. 캐시 규칙을 표시하려면 az acr cache show 명령을 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 캐시 규칙을 표시합니다.
     az acr cache show -r MyRegistry -n MyRule
    

액세스 정책을 사용하여 Key Vault에 권한 할당(레거시)

  1. Key Vault에 액세스하기 위해 사용 중인 시스템 ID의 주체 ID를 가져옵니다.

    PRINCIPAL_ID=$(az acr credential-set show 
                    -n MyDockerHubCredSet \ 
                    -r MyRegistry  \
                    --query 'identity.principalId' \ 
                    -o tsv) 
    
  2. 이미지를 끌어오기 전에 Key Vault에 대한 액세스 권한을 할당하려면 az keyvault set-policy 명령을 실행합니다.

    • 예를 들어, 자격 증명 액세스 KeyVault 비밀에 대한 권한을 할당합니다.
    az keyvault set-policy --name MyKeyVault \
    --object-id $PRINCIPAL_ID \
    --secret-permissions get
    

이미지 끌어오기

  1. 레지스트리 로그인 서버 이름, 리포지토리 이름 및 원하는 태그별로 Docker 명령을 사용하여 캐시에서 이미지를 끌어옵니다.

    • 예를 들어, 지정된 레지스트리 로그인 서버 myregistry.azurecr.io에 대해 원하는 태그 latest를 사용하여 리포지토리 hello-world에서 이미지를 끌어옵니다.
     docker pull myregistry.azurecr.io/hello-world:latest
    

리소스 정리

  1. az acr cache list 명령을 실행하여 Azure Container Registry의 캐시 규칙을 나열합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 캐시 규칙을 나열합니다.
     az acr cache list -r MyRegistry
    
  2. 캐시 규칙을 삭제하려면 az acr Cache delete 명령을 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 캐시 규칙을 삭제합니다.
    az acr cache delete -r MyRegistry -n MyRule
    
  3. Azure Container Registry의 자격 증명을 나열하려면 az acr credential set list를 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명을 나열합니다.
    az acr credential-set list -r MyRegistry
    
  4. 자격 증명을 삭제하려면 az acr credential-set delete를 실행합니다.

    • 예를 들어, 지정된 MyRegistry Azure Container Registry에 대한 자격 증명을 삭제합니다.
    az acr credential-set delete -r MyRegistry -n MyDockerHubCredSet
    

아티팩트 캐시 사용 - Azure Portal

단계에 따라 Azure Portal을 사용하여 인증을 사용하거나 사용하지 않고 Azure Container Registry에서 아티팩트 캐시를 사용하도록 설정할 수 있습니다.

필수 조건

자격 증명 없이 아티팩트 캐시 구성

Azure Portal에서 캐시 규칙을 만드는 단계를 따릅니다.

  1. Azure Container Registry로 이동합니다.

  2. 측면 메뉴서비스 아래에서 캐시를 선택합니다.

    Azure Portal의 레지스트리 캐시 스크린샷.

  3. 규칙 만들기를 선택합니다.

    Azure Portal에서 규칙 만들기 스크린샷.

  4. 새 캐시 규칙 창이 나타납니다.

    Azure Portal의 새 캐시 규칙에 대한 스크린샷.

  5. 규칙 이름을 입력합니다.

  6. 드롭다운 메뉴에서 원본 레지스트리를 선택합니다.

  7. 캐시하려는 아티팩트에 대한 리포지토리 경로를 입력합니다.

  8. 프라이빗 리포지토리에 액세스하지 않거나 인증된 가져오기를 수행하지 않는 경우에는 인증을 건너뛸 수 있습니다.

  9. 대상 아래에 캐시된 아티팩트를 저장할 새 ACR 리포지토리 네임스페이스의 이름을 입력합니다.

    Azure Portal에서 캐시 규칙을 저장하는 스크린샷.

  10. 저장을 선택합니다.

  11. 레지스트리 로그인 서버 이름, 리포지토리 이름 및 원하는 태그별로 Docker 명령을 사용하여 캐시에서 이미지를 가져옵니다.

    • 예를 들어, 지정된 레지스트리 로그인 서버 myregistry.azurecr.io에 대해 원하는 태그 latest를 사용하여 리포지토리 hello-world에서 이미지를 가져옵니다.
     docker pull myregistry.azurecr.io/hello-world:latest
    

인증을 사용하여 아티팩트 캐시 구성

Azure Portal에서 캐시 규칙을 만드는 단계를 따릅니다.

  1. Azure Container Registry로 이동합니다.

  2. 측면 메뉴서비스 아래에서 캐시를 선택합니다.

    Azure Portal의 레지스트리 캐시 스크린샷.

  3. 규칙 만들기를 선택합니다.

    Azure Portal에서 규칙 만들기 스크린샷.

  4. 새 캐시 규칙 창이 나타납니다.

    Azure Portal에서 인증을 사용하는 새 캐시 규칙에 대한 스크린샷.

  5. 규칙 이름을 입력합니다.

  6. 드롭다운 메뉴에서 원본 레지스트리를 선택합니다.

  7. 캐시하려는 아티팩트에 대한 리포지토리 경로를 입력합니다.

  8. 리포지토리에 인증을 추가하려면 인증 확인란을 선택합니다.

  9. 원본 레지스트리의 사용자 이름과 암호를 저장할 새 자격 증명 집합을 만들려면 새 자격 증명 만들기를 선택합니다. 새 자격 증명 생성 방법에 대해 알아봅니다.

  10. 자격 증명이 준비되면 드롭다운 메뉴에서 자격 증명을 선택합니다.

  11. 대상 아래에 캐시된 아티팩트를 저장할 새 ACR 리포지토리 네임스페이스의 이름을 입력합니다.

    Azure Portal에서 캐시 규칙을 저장하는 스크린샷.

  12. 저장을 선택합니다.

  13. 레지스트리 로그인 서버 이름, 리포지토리 이름 및 원하는 태그별로 Docker 명령을 사용하여 캐시에서 이미지를 가져옵니다.

    • 예를 들어, 지정된 레지스트리 로그인 서버 myregistry.azurecr.io에 대해 원하는 태그 latest를 사용하여 리포지토리 hello-world에서 이미지를 끌어옵니다.
     docker pull myregistry.azurecr.io/hello-world:latest
    

새 자격 증명 만들기

자격 증명을 구성하기 전에 Azure KeyVault에서 비밀을 만들고 저장하고 Key Vault에서 비밀을 검색해야 합니다. Key Vault에서 자격 증명 만들기 및 저장에 대해 자세히 알아봅니다. 그리고 Key Vault에서 비밀 설정 및 검색..

  1. 자격 증명>자격 증명 만들기로 이동합니다.

    Azure Portal에서 자격 증명을 추가하는 스크린샷.

    Azure Portal에서 새 자격 증명을 만드는 스크린샷.

  2. 원본 레지스트리의 새 자격 증명에 대해 이름을 입력합니다.

  3. 원본 인증을 선택합니다. 아티팩트 캐시는 현재 Key Vault에서 선택비밀 URI 입력을 지원합니다.

  4. Key Vault에서 선택 옵션의 경우 키 자격 증명 모음을 사용하여 자격 증명 만들기에 대해 자세히 알아봅니다.

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

다음 단계

  • 레지스트리 캐시 문제 해결 가이드를 살펴보려면 다음 문서로 안내합니다.