Azure Container Registry
Buduj i wypychaj obrazy Docker do prywatnego rejestru Azure Container Registry, zarządzaj dostępem za pomocą przypisań ról oraz automatyzuj kompilowanie obrazów przy użyciu ACR Tasks.
Azure Container Registry to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Czym jest Azure Container Registry?
Azure Container Registry (ACR) to zarządzana, prywatna usługa rejestru Docker oparta na otwartoźródłowym rozwiązaniu Docker Registry 2.0. Służy do przechowywania i zarządzania obrazami kontenerów oraz powiązanymi artefaktami (wykresami Helm i artefaktami OCI) używanymi we wdrożeniach Azure. ACR natywnie integruje się z usługami Azure Kubernetes Service (AKS), Azure Container Instances (ACI) i App Service, umożliwiając płynne pobieranie obrazów bez zarządzania poświadczeniami.
Warstwy usługi ACR
ACR oferuje trzy warstwy usługi. Basic jest zoptymalizowana pod kątem kosztów i przeznaczona do nauki oraz programowania o niewielkiej przepustowości; zapewnia 10 GB miejsca i ograniczoną obsługę elementów webhook. Standard dodaje funkcję replikacji geograficznej i zwiększoną przepustowość, dzięki czemu nadaje się do większości obciążeń produkcyjnych. Premium obejmuje replikację geograficzną, zaufanie do zawartości, łącza prywatne, klucze zarządzane przez klienta i najwyższą przepustowość — jest wymagana w przypadku korporacyjnych wymagań dotyczących bezpieczeństwa.
# Create a Premium ACR in East US
az acr create \
--name mycontainerregistry \
--resource-group MyRG \
--location eastus \
--sku Premium
# List ACR instances in the subscription
az acr list --query '[].{name:name, sku:sku.name, loginServer:loginServer}' -o tableWypychanie obrazów do ACR
Aby wypchnąć obraz Docker do ACR, należy uwierzytelnić klienta Docker, oznaczyć lokalny obraz nazwą hosta serwera logowania ACR, a następnie go wypchnąć. Adres URL serwera logowania ACR ma postać <registryname>.azurecr.io. Uwierzytelnianie odbywa się przy użyciu poświadczeń Azure AD za pomocą polecenia az acr login (do użytku interaktywnego) albo hasła administratora ACR lub jednostki usługi w przypadku zautomatyzowanych potoków.
# Authenticate to ACR
az acr login --name mycontainerregistry
# Tag a local image for ACR
docker tag myapp:latest mycontainerregistry.azurecr.io/myapp:v1.0
# Push the image
docker push mycontainerregistry.azurecr.io/myapp:v1.0
# List images in the registry
az acr repository list --name mycontainerregistry -o table
az acr repository show-tags --name mycontainerregistry --repository myappACR Tasks: kompilacje w chmurze
ACR Tasks umożliwiają kompilowanie obrazów Docker w chmurze bez lokalnego demona Docker. Szybkie zadanie (az acr build) wysyła kontekst kompilacji do ACR i zdalnie uruchamia plik Dockerfile, tworząc obraz przechowywany bezpośrednio w rejestrze. Zadania uruchamiane według harmonogramu lub na podstawie wyzwalaczy mogą automatycznie ponownie kompilować obraz po zaktualizowaniu obrazu bazowego lub zatwierdzeniu kodu w serwisie GitHub, umożliwiając utworzenie pełnego potoku CI dla kontenerów bez oddzielonego agenta kompilacji.
# Quick task: build and push without local Docker
az acr build \
--registry mycontainerregistry \
--image myapp:v1.0 \
. # build context (current directory with Dockerfile)
# Define a multi-step ACR Task triggered on commit
az acr task create \
--name buildAndTest \
--registry mycontainerregistry \
--context https://github.com/myorg/myrepo.git \
--file acr-task.yaml \
--git-access-token <GITHUB_PAT>Kontrola dostępu za pomocą RBAC
ACR integruje się z usługą Azure RBAC, zapewniając szczegółową kontrolę dostępu. Wbudowane role ACR obejmują AcrPull (tylko pobieranie obrazów — dla usług wdrażania), AcrPush (pobieranie i wypychanie — dla potoków CI/CD) oraz AcrDelete (zarządzanie tagami obrazów). Należy przypisać rolę AcrPull zarządzanej tożsamości AKS lub App Service, aby kontenery mogły pobierać obrazy bez przechowywania poświadczeń w dowolnym miejscu.
# Grant AKS cluster's managed identity the AcrPull role
ACR_ID=$(az acr show --name mycontainerregistry --resource-group MyRG --query id -o tsv)
AKS_IDENTITY=$(az aks show --name myAKSCluster --resource-group MyRG \
--query identityProfile.kubeletidentity.objectId -o tsv)
az role assignment create \
--assignee $AKS_IDENTITY \
--role AcrPull \
--scope $ACR_IDReplikacja geograficzna na potrzeby wdrożeń globalnych
Replikacja geograficzna (warstwa Premium) replikuje rejestr w wielu regionach Azure. Gdy usługa AKS lub ACI w danym regionie pobiera obraz, odczytuje go z najbliższej repliki zamiast ze zdalnego rejestru, co zmniejsza opóźnienia i koszty transferu wychodzącego. Replikacja jest przejrzysta — ten sam identyfikator URI obrazu działa globalnie, a ACR automatycznie kieruje żądania pobrania do geograficznie najbliższej repliki.
# Add a geo-replication to West Europe
az acr replication create \
--name westeurope \
--registry mycontainerregistry \
--location westeurope
# List all replicas
az acr replication list \
--registry mycontainerregistry \
--query '[].{name:name, location:location, status:provisioningState}' -o tableZaufanie do zawartości i podpisywanie obrazów
Zaufanie do zawartości (warstwa Premium) korzysta z narzędzia Docker Notary, aby zapewnić, że z rejestru można pobierać wyłącznie podpisane obrazy. Po włączeniu zaufania do zawartości w ACR niepodpisane obrazy są odrzucane. Podpisywanie odbywa się w potoku CI za pomocą zestawu narzędzi Docker Content Trust oraz zaufanej pary kluczy. Zapobiega to atakom na łańcuch dostaw, w których złośliwy obraz zostaje wypchnięty do rejestru i wdrożony na produkcji.
# Enable content trust on the registry
az acr config content-trust update \
--registry mycontainerregistry \
--status enabled
# Sign an image when pushing (DOCKER_CONTENT_TRUST env var)
# export DOCKER_CONTENT_TRUST=1
# docker push mycontainerregistry.azurecr.io/myapp:v1.0
# (Docker prompts for signing key passphrase)Skanowanie luk w zabezpieczeniach za pomocą usługi Defender
Włącz Microsoft Defender for Containers, aby automatycznie skanować każdy obraz wypchnięty do ACR pod kątem znanych luk w systemie operacyjnym i warstwie aplikacji (CVE). Usługa Defender generuje raport zawierający listę luk według poziomu ważności (Krytyczne, Wysokie, Średnie, Niskie) oraz wskazówki dotyczące ich usuwania. Za pomocą integracji z usługą Azure Policy można skonfigurować zasady blokujące wdrażanie obrazów z lukami krytycznymi do klastrów AKS.
# Enable Defender for Containers on the subscription
az security pricing create \
--name Containers \
--tier Standard
# View vulnerability assessment results
az security assessment list \
--query "[?contains(displayName, 'Container')].{name:displayName, status:status.code}" \
-o tablePrywatny punkt końcowy dla ACR
Aby zapewnić maksymalne bezpieczeństwo, wyłącz publiczny dostęp sieciowy do ACR i łącz się z rejestrem wyłącznie za pośrednictwem prywatnego punktu końcowego znajdującego się w sieci VNet. Gwarantuje to, że obrazy kontenerów nigdy nie są przesyłane przez publiczny Internet — wszystkie operacje pobierania odbywają się za pośrednictwem prywatnej sieci szkieletowej Azure. Skonfiguruj prywatną strefę DNS (privatelink.azurecr.io), aby rozpoznawała nazwę hosta rejestru na prywatny adres IP wewnątrz sieci VNet.
# Create a private endpoint for ACR
az network private-endpoint create \
--name acr-private-endpoint \
--resource-group MyRG \
--vnet-name MyVNet \
--subnet PrivateEndpointSubnet \
--private-connection-resource-id \
$(az acr show --name mycontainerregistry --query id -o tsv) \
--group-id registry \
--connection-name acrConnection
# Disable public access
az acr update \
--name mycontainerregistry \
--public-network-enabled falseZarządzanie cyklem życia: usuwanie starych obrazów
Bez zarządzania cyklem życia w rejestrach kontenerów gromadzą się tysiące starych tagów obrazów, zajmując kosztowną przestrzeń dyskową. Użyj zadań ACR purge (wbudowanych zadań czasowych), aby usuwać nieotagowane manifesty i tagi starsze niż określony czas. Uruchamiaj czyszczenie zgodnie z harmonogramem za pomocą polecenia az acr task create z poleceniem acr purge, wskazując konkretne repozytoria i zachowując minimalną liczbę najnowszych tagów.
# Create a scheduled purge task: delete tags older than 30d
az acr task create \
--name scheduledPurge \
--registry mycontainerregistry \
--cmd 'acr purge --filter myapp:.* --ago 30d --keep 5 --untagged' \
--schedule '0 1 * * *' \
--context /dev/nullIntegracja ACR z AKS
Najprostszym sposobem połączenia AKS z ACR jest użycie polecenia az aks update --attach-acr, które automatycznie nadaje zarządzanej tożsamości AKS rolę AcrPull. Po dołączeniu specyfikacje podów Kubernetes odwołują się do obrazów wyłącznie za pomocą pełnej nazwy hosta ACR — nie trzeba używać imagePullSecrets, ponieważ AKS przezroczyste uwierzytelnianie na poziomie węzła realizuje za pomocą zarządzanej tożsamości.
# Attach ACR to an existing AKS cluster
az aks update \
--name myAKSCluster \
--resource-group MyRG \
--attach-acr mycontainerregistry
# Now pods can use ACR images without imagePullSecrets
# Example pod spec:
# spec:
# containers:
# - name: myapp
# image: mycontainerregistry.azurecr.io/myapp:v1.0Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień Microsoft Azure Fundamentals (AZ-900) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji dowiedział się Pan / dowiedziała się Pani, że Azure Container Registry (ACR) to zarządzany prywatny rejestr przechowujący obrazy Docker, ACR Tasks umożliwiają budowanie obrazów w chmurze bez lokalnego demona Docker, a role RBAC (AcrPull, AcrPush) kontrolują dostęp usług wdrożeniowych i potoków CI/CD. W następnej części omówimy Azure Container Instances.
Często zadawane pytania
Czy lekcja „Azure Container Registry” jest bezpłatna?
Tak — pełny tekst „Azure Container Registry” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Azure Container Registry”?
Buduj i wypychaj obrazy Docker do prywatnego rejestru Azure Container Registry, zarządzaj dostępem za pomocą przypisań ról oraz automatyzuj kompilowanie obrazów przy użyciu ACR Tasks. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Azure Container Registry”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Azure Container Registry
- Azure Container Instances
- Podstawy Kubernetes na platformie Azure
- Wdrażanie obciążeń w AKS