Azure Container Registry
Crei e invii immagini Docker a un Azure Container Registry privato, gestisca l'accesso con assegnazioni di ruolo e automatizzi la compilazione delle immagini con ACR Tasks.
Azure Container Registry è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Che cos'è Azure Container Registry?
Azure Container Registry (ACR) è un servizio gestito di registro Docker privato, basato sul progetto open source Docker Registry 2.0. Archivia e gestisce immagini dei container e artefatti correlati (grafici Helm, artefatti OCI) utilizzati nelle distribuzioni Azure. ACR si integra nativamente con Azure Kubernetes Service (AKS), Azure Container Instances (ACI) e App Service, consentendo di eseguire il pull delle immagini senza gestire credenziali.
Livelli del servizio ACR
ACR offre tre livelli di servizio. Basic è ottimizzato per i costi e destinato all'apprendimento e allo sviluppo con throughput ridotto, con 10 GB di spazio di archiviazione e supporto limitato per i webhook. Standard aggiunge funzionalità di geo-replica e un throughput maggiore, risultando adatto alla maggior parte dei carichi di lavoro di produzione. Premium include geo-replica, content trust, collegamenti privati, chiavi gestite dal cliente e la larghezza di banda più elevata, necessaria per i requisiti di sicurezza aziendali.
# 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 tablePush delle immagini in ACR
Per eseguire il push di un'immagine Docker in ACR, autentichi il client Docker, assegni all'immagine locale un tag con il nome host del server di accesso ACR ed esegua il push. L'URL del server di accesso ACR segue il modello <registryname>.azurecr.io. L'autenticazione utilizza le credenziali Azure AD tramite az acr login (per l'uso interattivo), oppure una password amministratore ACR o un'entità servizio per le pipeline automatizzate.
# 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: compilazioni basate sul cloud
ACR Tasks consente di compilare immagini Docker nel cloud senza un daemon Docker locale. Un'attività rapida (az acr build) invia il contesto di compilazione ad ACR ed esegue il Dockerfile in remoto, producendo un'immagine archiviata direttamente nel registro. Le attività pianificate o basate su trigger possono ricompilare automaticamente l'immagine quando l'immagine di base viene aggiornata o quando viene eseguito il commit del codice in GitHub, consentendo una pipeline CI completa per i container senza un agente di compilazione separato.
# 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>Controllo degli accessi con RBAC
ACR si integra con Azure RBAC per offrire un controllo degli accessi granulare. I ruoli ACR integrati includono AcrPull (solo pull delle immagini, per i servizi di distribuzione), AcrPush (pull e push, per le pipeline CI/CD) e AcrDelete (gestione dei tag delle immagini). Assegni il ruolo AcrPull all'identità gestita di AKS o App Service affinché i container possano eseguire il pull delle immagini senza memorizzare credenziali.
# 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_IDGeo-replica per distribuzioni globali
La geo-replica (livello Premium) replica il registro in più aree di Azure. Quando AKS o ACI in un'area esegue il pull di un'immagine, la legge dalla replica più vicina invece che da un registro remoto, riducendo la latenza e i costi di uscita dei dati. La replica è trasparente: lo stesso URI dell'immagine funziona a livello globale e ACR instrada automaticamente le richieste di pull verso la replica geograficamente più vicina.
# 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 tableContent trust e firma delle immagini
Il content trust (livello Premium) utilizza Docker Notary per garantire che dal registro possano essere eseguite operazioni di pull solo sulle immagini firmate. Quando il content trust è abilitato in ACR, le immagini non firmate vengono rifiutate. La firma viene eseguita nella pipeline CI tramite la toolchain Docker Content Trust e una coppia di chiavi attendibile. Questo impedisce gli attacchi alla supply chain in cui un'immagine dannosa viene inviata e distribuita in produzione.
# 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)Analisi delle vulnerabilità con Defender
Abiliti Microsoft Defender for Containers per analizzare automaticamente ogni immagine inviata ad ACR alla ricerca di vulnerabilità note del sistema operativo e del livello applicativo (CVE). Defender produce un report che elenca le vulnerabilità in base alla gravità (Critical, High, Medium, Low) e fornisce indicazioni per la correzione. È possibile configurare criteri per bloccare, tramite l'integrazione con Azure Policy, la distribuzione nei cluster AKS delle immagini con vulnerabilità critiche.
# 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 tableEndpoint privato per ACR
Per ottenere il massimo livello di sicurezza, disabiliti l'accesso alla rete pubblica di ACR e si connetta esclusivamente tramite un endpoint privato all'interno della VNet. In questo modo le immagini dei container non vengono mai trasferite tramite Internet pubblico: tutti i pull passano attraverso la rete backbone privata di Azure. Configuri una zona DNS privata (privatelink.azurecr.io) per risolvere il nome host del registro nell'indirizzo IP privato all'interno della 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 falseGestione del ciclo di vita: eliminazione delle immagini obsolete
Senza la gestione del ciclo di vita, i registri dei container accumulano migliaia di tag di immagini obsolete, consumando spazio di archiviazione costoso. Utilizzi le attività di ACR purge (un'attività timer integrata) per eliminare i manifest e i tag senza tag più vecchi di una durata specificata. Esegua le operazioni di pulizia secondo una pianificazione utilizzando az acr task create con il comando acr purge, definendo repository specifici e conservando un numero minimo di tag recenti.
# 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/nullIntegrazione di ACR con AKS
Il modo più semplice per connettere AKS ad ACR consiste nell'usare il comando az aks update --attach-acr, che assegna automaticamente all'identità gestita di AKS il ruolo AcrPull. Dopo l'associazione, le specifiche dei pod Kubernetes fanno riferimento alle immagini usando solo il nome host completo di ACR: non è necessario alcun imagePullSecrets, perché AKS usa automaticamente l'identità gestita per l'autenticazione a livello del nodo.
# 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.0Verifica rapida
Verifichi la Sua comprensione dei concetti di Microsoft Azure Fundamentals (AZ-900) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che Azure Container Registry (ACR) è un registro privato gestito che archivia immagini Docker, che ACR Tasks consente di creare immagini nel cloud senza un demone Docker locale e che i ruoli RBAC (AcrPull, AcrPush) controllano l'accesso per i servizi di distribuzione e le pipeline CI/CD. Ora esploreremo Azure Container Instances.
Domande Frequenti
La lezione «Azure Container Registry» è gratuita?
Sì — il testo completo di «Azure Container Registry» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «Azure Container Registry»?
Crei e invii immagini Docker a un Azure Container Registry privato, gestisca l'accesso con assegnazioni di ruolo e automatizzi la compilazione delle immagini con ACR Tasks. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Azure Container Registry»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Azure Container Registry
- Azure Container Instances
- Concetti Kubernetes per Azure
- Distribuzione di carichi di lavoro su AKS