Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Container Registry est un service de registre privé permettant de créer, de stocker et de gérer des images conteneurs et les artefacts associés. Dans ce guide de démarrage rapide, vous créez une instance de registre de conteneurs Azure avec le portail Azure. Vous allez ensuite utiliser des commandes Docker pour envoyer (push) une image conteneur dans le registre, puis tirer (pull) et exécuter l’image à partir de votre registre.
Pour vous connecter au registre et utiliser des images conteneur, ce guide de démarrage rapide vous demande d’exécuter Azure CLI (version 2.0.55 ou ultérieure recommandée). Exécutez az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
Docker doit également être installé localement avec le démon en cours d’exécution. Docker fournit des packages qui le configurent facilement sur n’importe quel système Mac, Windows ou Linux.
Connexion à Azure
Connectez-vous au portail Azure.
Créer un registre de conteneur
Sélectionnez Créer une ressource>Conteneurs>Container Registry.
Configurer le nom et la référence SKU du registre de conteneurs
Sous l’onglet Informations de base, entrez les valeurs appropriées pour Groupe de ressources et Nom du registre. Le nom du registre doit être unique dans Azure et contenir 5 à 50 caractères alphanumériques, avec des tirets (-
) non autorisés dans le nom du registre. Pour ce guide de démarrage rapide, créez un groupe de ressources dans l’emplacement West US 2
nommé myResourceGroup
, et sélectionnez Standard
pour SKU.
Pour plus d’informations sur les différentes options de SKU, consultez Azure Container Registry SKU.
Configurer l’option DNL (Domain Name Label)
La fonctionnalité Domain Name Label (DNL) renforce la sécurité en empêchant les attaques de prise de contrôle de sous-domaines des noms DNS du registre. Ces attaques se produisent lorsqu’un registre est supprimé et qu’une autre entité réutilise le même nom de registre, ce qui peut entraîner l’extraction de références en aval à partir du registre recréé par l’autre entité.
DNL résout ce problème en ajoutant un hachage unique au nom DNS du registre. Cela garantit que même si le même nom de Registre est réutilisé par une autre entité, les noms DNS diffèrent en raison du hachage unique. Vous éviterez ainsi que vos références en aval ne pointent par inadvertance vers le registre recréé par l’autre entité.
Lors de la création d’un registre à partir du portail, sélectionnez l’étendue d’étiquette de nom de domaine dans les options disponibles :
- Non sécurisé : crée le nom DNS as-is, en fonction du nom du Registre (par exemple
contosoacrregistry.azurecr.io
). Cette option n’inclut pas la protection DNL. - Réutilisation du locataire : ajoute une synthèse du message unique en fonction du nom du locataire et du registre, ce qui garantit que le nom DNS est unique dans le locataire.
- Réutilisation de l’abonnement : ajoute un hachage unique basé sur l’abonnement, le locataire et le nom du Registre, ce qui garantit que le nom DNS est unique dans l’abonnement.
- Réutilisation des groupes de ressources : ajoute un hachage unique basé sur le groupe de ressources, l’abonnement, le locataire et le nom du registre, afin de garantir l'unicité du nom DNS au sein du groupe de ressources.
- Aucune réutilisation : génère un nom DNS unique avec un hachage unique chaque fois que le registre est créé, quels que soient d’autres facteurs, ce qui garantit que le nom DNS est toujours unique.
Remarque
Configuration immuable : l’étendue DNL sélectionnée lors de la création du Registre est permanente et ne peut pas être modifiée ultérieurement. Cela garantit un comportement DNS cohérent et empêche les interruptions des références en aval.
Implications du nom DNS des options DNL
Format de nom DNS : pour toutes les options compatibles DNL, sauf non sécurisé, le nom DNS suit le format registryname-hash.azurecr.io
, où le tiret (-
) sert de délimiteur de hachage. Pour éviter les conflits, tiret (-
) n’est pas autorisé dans le nom du registre. Par exemple, un registre nommé contosoacrregistry
avec l’étendue Tenant Reuse
DNL aura un nom DNS comme contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
.
Références en aval : le nom DNS peut différer du nom du Registre, nécessitant des mises à jour dans des fichiers en aval tels que Dockerfiles, Kubernetes YAML et des graphiques Helm pour refléter le nom DNS complet avec le hachage DNL. Par exemple, si vous souhaitez que votre fichier Dockerfile en aval référence un registre nommé contosoacrregistry
avec le scope Tenant Reuse
DNL, vous devez mettre à jour la référence à contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
dans votre fichier Dockerfile en aval.
Configurer le mode d’autorisations d’attribution de rôle
Configurez le « mode d’autorisations d’attribution de rôle » du nouveau registre. Cette option détermine comment le contrôle d’accès en fonction du rôle Microsoft Entra (RBAC) et les attributions de rôles sont gérés pour le Registre, notamment l’utilisation du contrôle d’accès en fonction de l’attribut Microsoft Entra (ABAC) pour les autorisations du référentiel Microsoft Entra.
Choisissez « Registre RBAC + Autorisations de référentiel ABAC » pour conserver les attributions de rôles RBAC Microsoft Entra standard, tout en appliquant éventuellement des conditions Microsoft Entra ABAC pour un contrôle d’accès précis au niveau du dépôt.
Pour plus d’informations sur cette option, consultez le contrôle d’accès en fonction de l’attribut Microsoft Entra (ABAC) pour obtenir des autorisations de dépôt.
Déploiement du registre de conteneurs
Acceptez les valeurs par défaut pour les autres paramètres. Sélectionnez ensuite Passer en revue + créer . Après avoir passé en revue les paramètres, sélectionnez Créer.
Conseil
Dans ce guide de démarrage rapide, vous créez un registre Standard , qui est suffisant pour la plupart des flux de travail Azure Container Registry. Choisissez d’autres niveaux pour un stockage et un débit d’image accrus, ainsi que des fonctionnalités telles que la connexion à l’aide d’un point de terminaison privé. Pour plus d’informations sur les niveaux de service disponibles (SKU), consultez Niveaux de service des registres de conteneurs.
Quand le message Déploiement réussi s’affiche, sélectionnez le registre de conteneurs dans le portail.
Prenez note du nom du registre et de la valeur du Serveur de connexion, qui est un nom complet se terminant par azurecr.io
dans le cloud Azure. Si vous avez sélectionné une option DNL, le nom du serveur de connexion inclut un hachage unique.
Utilisez le serveur de connexion dans les étapes suivantes lorsque vous envoyez et extrayez des images avec Docker, ainsi que dans des références en aval telles que Dockerfiles, Kubernetes YAML et les graphiques Helm.
Se connecter au registre
Avant d’envoyer (push) et de tirer (pull) des images conteneur, vous devez vous connecter à l’instance du registre. Connectez-vous à Azure CLI sur votre machine locale, puis exécutez la commande az acr login.
Spécifiez uniquement le nom de la ressource de registre lors de la connexion avec Azure CLI, tel que az acr login -n registryname
. N’utilisez pas le nom complet du serveur de connexion, tel que registryname.azurecr.io
ou registryname-hash.azurecr.io
(pour les registres compatibles DNL).
az acr login --name <registry-name>
Exemple :
az acr login --name contosoacrregistry
Une fois l’opération terminée, la commande renvoie Login Succeeded
.
Envoyer l’image au registre
Pour envoyer une image dans un registre Azure Container Registry, vous devez tout d’abord disposer d’une image. Si vous n’avez pas encore d’images conteneur locales, exécutez la commande docker pull suivante pour tirer (pull) une image publique existante. Pour cet exemple, tirez l’image hello-world
à partir de Microsoft Container Registry.
docker pull mcr.microsoft.com/hello-world
Avant de pouvoir "push" une image vers votre registre, vous devez la taguer à l’aide de la commande docker tag avec le nom complet de votre serveur de connexion de votre registre.
- Le format de nom de serveur de connexion pour les registres protégés par le Libellé de Nom de Domaine (DNL), avec un hachage unique de nom DNS inclus, est
mycontainerregistry-abc123.azurecr.io
. - Le format de nom du serveur de connexion pour les registres créés avec l’option
Unsecure
DNL estmycontainerregistry.azurecr.io
.
Par exemple, si votre registre a été créé avec l’étendue DNL Tenant Reuse
, le serveur de connexion peut ressembler à mycontainerregistry-abc123.azurecr.io
avec un hachage dans le nom DNS. Si votre registre a été créé avec l’option Unsecure
DNL, le serveur de connexion ressemblerait à mycontainerregistry.azurecr.io
sans le hachage.
Pour plus d’informations sur les options DNL lors de la création du Registre et des implications du nom DNS, consultez Démarrage rapide - Créer un registre dans le portail.
Exemple : marquage d'une image avant l'envoi
Étiquetez l’image à l’aide de la commande docker tag à l’aide du serveur de connexion de votre registre.
Image de balisage pour un registre non-DNL :
docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1
Image de balisage pour un registre compatible DNL :
docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.azurecr.io/hello-world:v1
Pour finir, utilisez la commande docker push pour envoyer l’image vers l’instance du registre. Remplacez <login-server>
par le nom du serveur de connexion de votre instance de registre. Cet exemple crée le référentiel hello-world qui contient l’image hello-world:v1
.
docker push <login-server>/hello-world:v1
Après avoir envoyé (push) l’image à votre registre de conteneurs, supprimez l’image hello-world:v1
de votre environnement Docker local. (Notez que cette commande docker rmi ne supprime pas l’image du référentiel hello-world dans votre registre de conteneurs Azure.)
docker rmi <login-server>/hello-world:v1
Répertorier les images conteneur
Pour lister les images de votre registre, accédez à ce registre dans le portail, sélectionnez Référentiels, puis le référentiel hello-world que vous avez créé avec docker push
.
En sélectionnant le référentiel hello-world, vous voyez l’image étiquetée v1
sous Étiquettes.
Exécuter l’image à partir du registre
Vous pouvez à présent extraire (pull) et exécuter l’image conteneur hello-world:v1
à partir de votre registre de conteneurs à l’aide de docker run :
docker run <login-server>/hello-world:v1
Exemple de sortie :
Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Nettoyer les ressources
Pour supprimer vos ressources, accédez au groupe de ressources myResourceGroup dans le portail. Une fois le groupe de ressources chargé, cliquez sur Supprimer le groupe de ressources pour supprimer le groupe de ressources, le registre de conteneurs et les images conteneur stockées à cet endroit.
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un registre Azure Container Registry avec le portail Azure, envoyé (push) une image conteneur, puis tiré (pull) et exécuté l’image à partir du registre. Passez à présent au tutoriel sur Azure Container Registry (ACR) pour approfondir vos connaissances.