Remarque
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é pour la création, le stockage et la gestion des images conteneur et des artefacts associés. Dans ce guide de démarrage rapide, vous créez une instance de registre de conteneurs Azure avec le portail Azure. Ensuite, vous utilisez des commandes Docker pour envoyer (push) une image conteneur dans le Registre. Enfin, vous extrayez et exécutez l’image à partir de votre registre.
Prerequisites
Si vous n’avez pas de compte Azure, créez un compte gratuit avant de commencer.
Pour vous connecter au Registre pour utiliser des images conteneur, ce guide de démarrage rapide nécessite l’exécution d’Azure CLI, de préférence la version la plus récente. Si vous avez besoin d’installer ou de mettre à niveau, consultez Comment 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.
Créer un registre de conteneur
Connectez-vous au portail Azure.
Sélectionnez Créer une ressource>Services d'infrastructure>Registre de Conteneurs>Créer.
Sous l’onglet Informations de base , sélectionnez l’abonnement dans lequel vous souhaitez créer le registre de conteneurs.
Sélectionnez Créer nouveau pour créer un groupe de ressources, puis entrez
myResourceGrouple nom du groupe de ressources.Entrez un nom de Registre. Le nom du Registre doit être unique dans Azure et contenir 5 à 50 caractères alphanumériques, à l’exception des tirets (
-). Ce nom fait partie du nom DNS complet du Registre.Sélectionnez USA Ouest 2 pour l’emplacement, puis pour le plan tarifaire, sélectionnez
Standard.Pour l’étendue de l’étiquette de nom de domaine, sélectionnez Réutilisation du locataire ou choisissez une autre option, comme décrit dans la section Configurer l'option d'étiquette de nom de domaine (DNL).
Pour le mode d’autorisations d’attribution de rôle, sélectionnez Registre RBAC + Autorisations de référentiel ABAC pour conserver les attributions de rôle Standard Microsoft Entra en fonction du rôle (RBAC), tout en appliquant éventuellement des conditions de contrôle d’accès en fonction de l’attribut (ABAC) Microsoft Entra pour le contrôle d’accès précis au niveau du dépôt.
Laissez les autres options définies sur leurs valeurs par défaut, puis sélectionnez Vérifier + 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. Pour augmenter le débit de stockage et d’image et les fonctionnalités telles que la connexion à l’aide d’un point de terminaison privé, l’option de plan tarifaire Premium (SKU) est disponible. Pour plus d’informations sur les niveaux de service (SKUs), consultez les fonctionnalités et limites des SKUs Azure Container Registry.
Lorsque le message Déploiement a réussi , sélectionnez Accéder à la ressource pour afficher votre nouveau registre de conteneurs.
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.
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 des 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 ordinateur local, 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, comme 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
La commande retourne Login Succeeded une fois terminée.
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 d’envoyer (push) une image vers le registre, vous devez la marquer à l'aide de la balise docker en indiquant le nom complet de votre serveur de connexion au registre.
- Le format de nom du serveur de connexion pour les registres protégés par l’étiquette de nom de domaine (DNL) avec un hachage de nom DNS unique inclus est
mycontainerregistry-abc123.azurecr.io. - Le format de nom du serveur de connexion pour les registres créés avec l’option
UnsecureDNL estmycontainerregistry.azurecr.io.
Par exemple, si vous créez un registre avec l'étendue Tenant Reuse DNL, le serveur de connexion peut ressembler à mycontainerregistry-abc123.azurecr.io, avec un hachage dans le nom DNS. Si vous créez un registre avec l’option Unsecure DNL, le serveur de connexion ressemble à mycontainerregistry.azurecr.io, sans le hachage.
Étiquetez l’image à l’aide de la commande docker tag avec le serveur de connexion de votre registre. Pour ce guide de démarrage rapide, étiquetez l’image hello-world avec v1.
Exemple de commande pour étiqueter une image pour un registre protégé par DNL :
docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.azurecr.io/hello-world:v1
Exemple de commande pour étiqueter une image pour un registre non-DNL :
docker tag mcr.microsoft.com/hello-world mycontainerregistry.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é l’image à votre registre de conteneurs, supprimez l’image hello-world:v1 de votre environnement Docker local à l’aide de la commande docker rmi . Cette commande 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 répertorier les images de votre registre, accédez à votre registre dans le portail. Sous Services, sélectionnez Référentiels, puis sélectionnez le référentiel hello-world que vous avez créé avec docker push.
Lorsque vous sélectionnez le dépôt hello-world, vous voyez l'image étiquetée v1 sous Balises.
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 les ressources que vous avez créées, accédez au groupe de ressources myResourceGroup dans le portail Azure. Sélectionnez Supprimer le groupe de ressources pour supprimer le groupe de ressources, le registre de conteneurs et les images conteneur.
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. Cette approche garantit que même si une autre entité réutilise le même nom de Registre, les noms DNS diffèrent en raison du hachage unique. Cette protection empêche vos références en aval de pointer par inadvertance vers le registre recréé par l’autre entité.
Lorsque vous créez un registre à partir du portail Azure, 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.ioCette 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 vous créez le registre, quels que soient d’autres facteurs, ce qui garantit que le nom DNS est toujours unique.
Important
L’étendue DNL que vous sélectionnez lors de la création du Registre est permanente et ne peut pas être modifiée ultérieurement. Ce choix garantit un comportement DNS cohérent et empêche les interruptions des références en aval.
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. Par exemple, un registre nommé contosoacrregistry avec l’étendue Tenant Reuse DNL a un nom DNS comme contosoacrregistry-abc123.azurecr.io. Pour éviter les conflits, le tiret (-) n’est pas autorisé dans le nom du Registre.
Si le nom DNS diffère du nom du Registre, vous devez mettre à jour les fichiers en aval tels que les fichiers Dockerfiles, Kubernetes YAML et Les 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 l’étendue Tenant Reuse DNL, vous devez mettre à jour la référence à la valeur complète, comme contosoacrregistry-abc123.azurecr.io dans votre fichier Dockerfile en aval.
Étapes suivantes
- En savoir plus sur les registres, les dépôts et les artefacts.
- Découvrez comment envoyer et extraire des images vers votre registre de conteneurs à l’aide de l’interface CLI Docker.