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 Azure Fundamentals 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 Azure Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Azure Fundamentals 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.
Ucz się Azure Fundamentals dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
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 Azure Fundamentals, przejdź na CoddyKit PRO. Kurs Azure Fundamentals 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 Azure Fundamentals 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ąć Azure Fundamentals?
Nie wymagamy żadnego doświadczenia. Azure Fundamentals 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 Azure Fundamentals?
Tak. Każda lekcja Azure Fundamentals 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