Azure Container Registry
Créez et envoyez des images Docker vers un registre de conteneurs Azure privé, gérez les accès avec des attributions de rôles et automatisez la création d’images avec les tâches ACR.
Azure Container Registry est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu’est-ce qu’Azure Container Registry ?
Azure Container Registry (ACR) est un service de registre Docker privé et managé, basé sur le registre Docker 2.0 open source. Il stocke et gère les images de conteneurs ainsi que les artefacts associés (graphiques Helm, artefacts OCI) utilisés par vos déploiements Azure. ACR s’intègre nativement à Azure Kubernetes Service (AKS), Azure Container Instances (ACI) et App Service, ce qui permet d’extraire les images de manière transparente sans gérer d’informations d’identification.
Niveaux de service ACR
ACR propose trois niveaux de service. Basic est optimisé en termes de coût pour l’apprentissage et le développement à faible débit, avec 10 Go de stockage et une prise en charge limitée des webhooks. Standard ajoute des fonctionnalités de réplication géographique et un débit accru, ce qui convient à la plupart des charges de travail de production. Premium inclut la réplication géographique, la confiance du contenu, les liens privés, les clés gérées par le client et la bande passante la plus élevée, nécessaires pour les exigences de sécurité des entreprises.
# 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 tableEnvoyer des images vers ACR
Pour envoyer une image Docker vers ACR, authentifiez le client Docker, balisez votre image locale avec le nom d’hôte du serveur de connexion ACR, puis envoyez-la. L’URL du serveur de connexion ACR suit le modèle <registryname>.azurecr.io. L’authentification utilise vos informations d’identification Azure AD via az acr login (pour une utilisation interactive), ou un mot de passe d’administrateur ACR ou un principal de service pour les pipelines automatisés.
# 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 myappTâches ACR : compilations dans le cloud
Les tâches ACR vous permettent de compiler des images Docker dans le cloud sans démon Docker local. Une tâche rapide (az acr build) envoie votre contexte de compilation vers ACR et exécute le Dockerfile à distance, produisant une image stockée directement dans le registre. Les tâches planifiées ou déclenchées par des événements peuvent recréer automatiquement votre image lorsque l’image de base est mise à jour ou lorsque du code est validé dans GitHub, ce qui permet de disposer d’un pipeline CI complet pour les conteneurs sans agent de compilation distinct.
# 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>Contrôle d’accès avec RBAC
ACR s’intègre à Azure RBAC pour fournir un contrôle d’accès précis. Les rôles ACR intégrés comprennent AcrPull (extraction d’images uniquement, pour les services de déploiement), AcrPush (extraction et envoi, pour les pipelines CI/CD) et AcrDelete (gestion des balises d’image). Attribuez le rôle AcrPull à l’identité managée de votre AKS ou de votre App Service afin que les conteneurs puissent extraire des images sans stocker d’informations d’identification.
# 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_IDRéplication géographique pour les déploiements mondiaux
La réplication géographique (niveau Premium) réplique votre registre dans plusieurs régions Azure. Lorsqu’AKS ou ACI extrait une image dans une région, il la lit depuis la réplique la plus proche plutôt que depuis un registre distant, ce qui réduit la latence et les coûts de sortie. La réplication est transparente : la même URI d’image fonctionne partout dans le monde et ACR achemine automatiquement les demandes d’extraction vers la réplique géographiquement la plus proche.
# 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 tableConfiance du contenu et signature des images
La confiance du contenu (niveau Premium) utilise Docker Notary pour garantir que seules les images signées peuvent être extraites du registre. Lorsque la confiance du contenu est activée sur ACR, les images non signées sont rejetées. La signature est effectuée dans le pipeline CI à l’aide de la chaîne d’outils Docker Content Trust et d’une paire de clés de confiance. Cela empêche les attaques visant la chaîne d’approvisionnement, lors desquelles une image malveillante est envoyée puis déployée en production.
# 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)Analyse des vulnérabilités avec Defender
Activez Microsoft Defender for Containers afin d’analyser automatiquement chaque image envoyée vers ACR à la recherche de vulnérabilités connues dans le système d’exploitation et la couche applicative (CVE). Defender génère un rapport répertoriant les vulnérabilités par niveau de gravité (Critique, Élevé, Moyen, Faible) et fournit des conseils de correction. Vous pouvez configurer des stratégies pour bloquer le déploiement d’images présentant des vulnérabilités critiques dans des clusters AKS via l’intégration à Azure Policy.
# 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 tablePoint de terminaison privé pour ACR
Pour une sécurité maximale, désactivez l’accès réseau public d’ACR et connectez-vous exclusivement à celui-ci via un point de terminaison privé situé dans votre VNet. Les images de conteneurs ne sont ainsi jamais transférées sur l’Internet public : toutes les extractions passent par le réseau privé d’Azure. Configurez une zone DNS privée (privatelink.azurecr.io) afin de résoudre le nom d’hôte du registre vers l’adresse IP privée située dans votre 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 falseGestion du cycle de vie : supprimer les anciennes images
Sans gestion du cycle de vie, les registres de conteneurs accumulent des milliers d’anciennes balises d’image, qui consomment un espace de stockage coûteux. Utilisez les tâches de purge ACR (une tâche de planification intégrée) pour supprimer les manifestes et les balises sans balise datant de plus longtemps qu’une durée spécifiée. Exécutez les purges selon une planification à l’aide de az acr task create avec la commande acr purge, en ciblant des référentiels spécifiques et en conservant un nombre minimal de balises récentes.
# 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/nullIntégrer ACR à AKS
La méthode la plus simple pour connecter AKS à ACR consiste à utiliser la commande az aks update --attach-acr, qui attribue automatiquement le rôle AcrPull à l’identité managée d’AKS. Après l’association, les spécifications des Pods Kubernetes référencent les images uniquement à l’aide du nom d’hôte complet d’ACR : aucun paramètre imagePullSecrets n’est nécessaire, car AKS utilise de manière transparente l’identité managée pour s’authentifier au niveau du nœud.
# 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.0Vérification rapide
Vérifiez votre compréhension des concepts de Microsoft Azure Fundamentals (AZ-900) abordés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que Azure Container Registry (ACR) est un registre privé managé qui stocke des images Docker, que les tâches ACR permettent de créer des images dans le cloud sans démon Docker local, et que les rôles RBAC (AcrPull, AcrPush) contrôlent l’accès des services de déploiement et des pipelines d’intégration et de déploiement continus. Nous allons maintenant découvrir Azure Container Instances.
Questions Fréquemment Posées
La leçon « Azure Container Registry » est-elle gratuite ?
Oui — le texte complet de « Azure Container Registry » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Azure Container Registry » ?
Créez et envoyez des images Docker vers un registre de conteneurs Azure privé, gérez les accès avec des attributions de rôles et automatisez la création d’images avec les tâches ACR. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Azure Container Registry » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Azure Container Registry
- Azure Container Instances
- Concepts Kubernetes pour Azure
- Déploiement de charges de travail sur AKS