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에서 비밀 설정 및 검색에 대해 자세히 알아봅니다.
자격 증명 없이 캐시 규칙을 구성하고 만듭니다.
az acr Cache create 명령을 실행하여 캐시 규칙을 만듭니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 자격 증명 없이 캐시 규칙을 만듭니다.
az acr Cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu-
- 예를 들어, 지정된
캐시 규칙을 표시하려면 az acr Cache show 명령을 실행합니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 캐시 규칙을 표시합니다.
az acr Cache show -r MyRegistry -n MyRule
- 예를 들어, 지정된
자격 증명 만들기
자격 증명을 구성하기 전에 Azure KeyVault에 비밀을 만들고 저장하고 Key Vault에서 비밀을 검색해야 합니다. Key Vault에서 자격 증명 만들기 및 저장에 대해 자세히 알아봅니다. 그리고 Key Vault에서 비밀 설정 및 검색..
자격 증명을 만들려면 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
- 예를 들어, 지정된
자격 증명 집합의 사용자 이름 또는 암호 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
- 예를 들어, 지정된
자격 증명을 표시하려면 az acr credential-set show를 실행합니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 자격 증명 집합을 표시합니다.
az acr credential-set show -r MyRegistry -n MyDockerHubCredSet
- 예를 들어, 지정된
자격 증명을 사용하여 캐시 규칙 구성 및 만들기
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
- 예를 들어, 지정된
캐시 규칙에 대한 자격 증명을 업데이트하려면 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
- 예를 들어, 지정된
캐시 규칙을 표시하려면 az acr cache show 명령을 실행합니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 캐시 규칙을 표시합니다.
az acr cache show -r MyRegistry -n MyRule
- 예를 들어, 지정된
액세스 정책을 사용하여 Key Vault에 권한 할당(레거시)
Key Vault에 액세스하기 위해 사용 중인 시스템 ID의 주체 ID를 가져옵니다.
PRINCIPAL_ID=$(az acr credential-set show -n MyDockerHubCredSet \ -r MyRegistry \ --query 'identity.principalId' \ -o tsv)
이미지를 끌어오기 전에 Key Vault에 대한 액세스 권한을 할당하려면 az keyvault set-policy 명령을 실행합니다.
- 예를 들어, 자격 증명 액세스 KeyVault 비밀에 대한 권한을 할당합니다.
az keyvault set-policy --name MyKeyVault \ --object-id $PRINCIPAL_ID \ --secret-permissions get
이미지 끌어오기
레지스트리 로그인 서버 이름, 리포지토리 이름 및 원하는 태그별로 Docker 명령을 사용하여 캐시에서 이미지를 끌어옵니다.
- 예를 들어, 지정된 레지스트리 로그인 서버
myregistry.azurecr.io
에 대해 원하는 태그latest
를 사용하여 리포지토리hello-world
에서 이미지를 끌어옵니다.
docker pull myregistry.azurecr.io/hello-world:latest
- 예를 들어, 지정된 레지스트리 로그인 서버
리소스 정리
az acr cache list 명령을 실행하여 Azure Container Registry의 캐시 규칙을 나열합니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 캐시 규칙을 나열합니다.
az acr cache list -r MyRegistry
- 예를 들어, 지정된
캐시 규칙을 삭제하려면 az acr Cache delete 명령을 실행합니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 캐시 규칙을 삭제합니다.
az acr cache delete -r MyRegistry -n MyRule
- 예를 들어, 지정된
Azure Container Registry의 자격 증명을 나열하려면 az acr credential set list를 실행합니다.
- 예를 들어, 지정된
MyRegistry
Azure Container Registry에 대한 자격 증명을 나열합니다.
az acr credential-set list -r MyRegistry
- 예를 들어, 지정된
자격 증명을 삭제하려면 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 포털
- 자격 증명을 저장할 기존 Key Vault가 있습니다. Key Vault에서 자격 증명 만들기 및 저장에 대해 자세히 알아봅니다.
- RBAC(역할 기반 액세스) 컨트롤이 없는 기존 Key Vault가 있습니다.
자격 증명 없이 아티팩트 캐시 구성
Azure Portal에서 캐시 규칙을 만드는 단계를 따릅니다.
Azure Container Registry로 이동합니다.
측면 메뉴의 서비스 아래에서 캐시를 선택합니다.
규칙 만들기를 선택합니다.
새 캐시 규칙 창이 나타납니다.
규칙 이름을 입력합니다.
드롭다운 메뉴에서 원본 레지스트리를 선택합니다.
캐시하려는 아티팩트에 대한 리포지토리 경로를 입력합니다.
프라이빗 리포지토리에 액세스하지 않거나 인증된 가져오기를 수행하지 않는 경우에는 인증을 건너뛸 수 있습니다.
대상 아래에 캐시된 아티팩트를 저장할 새 ACR 리포지토리 네임스페이스의 이름을 입력합니다.
저장을 선택합니다.
레지스트리 로그인 서버 이름, 리포지토리 이름 및 원하는 태그별로 Docker 명령을 사용하여 캐시에서 이미지를 가져옵니다.
- 예를 들어, 지정된 레지스트리 로그인 서버
myregistry.azurecr.io
에 대해 원하는 태그latest
를 사용하여 리포지토리hello-world
에서 이미지를 가져옵니다.
docker pull myregistry.azurecr.io/hello-world:latest
- 예를 들어, 지정된 레지스트리 로그인 서버
인증을 사용하여 아티팩트 캐시 구성
Azure Portal에서 캐시 규칙을 만드는 단계를 따릅니다.
Azure Container Registry로 이동합니다.
측면 메뉴의 서비스 아래에서 캐시를 선택합니다.
규칙 만들기를 선택합니다.
새 캐시 규칙 창이 나타납니다.
규칙 이름을 입력합니다.
드롭다운 메뉴에서 원본 레지스트리를 선택합니다.
캐시하려는 아티팩트에 대한 리포지토리 경로를 입력합니다.
리포지토리에 인증을 추가하려면 인증 확인란을 선택합니다.
원본 레지스트리의 사용자 이름과 암호를 저장할 새 자격 증명 집합을 만들려면 새 자격 증명 만들기를 선택합니다. 새 자격 증명 생성 방법에 대해 알아봅니다.
자격 증명이 준비되면 드롭다운 메뉴에서 자격 증명을 선택합니다.
대상 아래에 캐시된 아티팩트를 저장할 새 ACR 리포지토리 네임스페이스의 이름을 입력합니다.
저장을 선택합니다.
레지스트리 로그인 서버 이름, 리포지토리 이름 및 원하는 태그별로 Docker 명령을 사용하여 캐시에서 이미지를 가져옵니다.
- 예를 들어, 지정된 레지스트리 로그인 서버
myregistry.azurecr.io
에 대해 원하는 태그latest
를 사용하여 리포지토리hello-world
에서 이미지를 끌어옵니다.
docker pull myregistry.azurecr.io/hello-world:latest
- 예를 들어, 지정된 레지스트리 로그인 서버
새 자격 증명 만들기
자격 증명을 구성하기 전에 Azure KeyVault에서 비밀을 만들고 저장하고 Key Vault에서 비밀을 검색해야 합니다. Key Vault에서 자격 증명 만들기 및 저장에 대해 자세히 알아봅니다. 그리고 Key Vault에서 비밀 설정 및 검색..
자격 증명>자격 증명 만들기로 이동합니다.
원본 레지스트리의 새 자격 증명에 대해 이름을 입력합니다.
원본 인증을 선택합니다. 아티팩트 캐시는 현재 Key Vault에서 선택 및 비밀 URI 입력을 지원합니다.
Key Vault에서 선택 옵션의 경우 키 자격 증명 모음을 사용하여 자격 증명 만들기에 대해 자세히 알아봅니다.
만들기를 선택합니다.
다음 단계
- 레지스트리 캐시 문제 해결 가이드를 살펴보려면 다음 문서로 안내합니다.