Démarrage rapide : Créer un registre de conteneurs privé avec Azure CLI

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 Azure CLI. 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.

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é en local. Docker fournit des packages qui le configurent facilement sur n’importe quel système macOS, Windows ou Linux.

Étant donné qu’Azure Cloud Shell n’inclut pas tous les composants Docker requis (par exemple, le démon dockerd), vous ne pouvez pas l’utiliser pour ce démarrage rapide.

Créer un groupe de ressources

Créez un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.

L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus.

az group create --name myResourceGroup --location eastus

Créer un registre de conteneur

Dans ce guide de démarrage rapide, vous allez créer un registreDe base. Il s’agit d’une option à coût optimisé pour les développeurs qui apprennent à se servir d’Azure Container Registry. Pour plus d’informations sur les niveaux de service disponibles, consultez Niveaux de service des registres de conteneurs.

Créez une instance ACR à l’aide de la commande az acr create. Le nom de registre doit être unique dans Azure, et contenir de 5 à 50 caractères alphanumériques en minuscules. Dans l’exemple suivant, mycontainerregistry est utilisé. Mettez à jour le nom de façon à utiliser une valeur unique.

az acr create --resource-group myResourceGroup \
  --name mycontainerregistry --sku Basic

Une fois le registre créé, la sortie ressemble à ce qui suit :

{
  "adminUserEnabled": false,
  "creationDate": "2019-01-08T22:32:13.175925+00:00",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry",
  "location": "eastus",
  "loginServer": "mycontainerregistry.azurecr.io",
  "name": "mycontainerregistry",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

Notez loginServer dans la sortie, qui est le nom complet du registre (tout en minuscules). Dans la suite et fin du présent guide de démarrage rapide, <registry-name> est un espace réservé pour le nom du registre de conteneurs et <login-server> est un espace réservé pour le nom du serveur de connexion du registre.

Conseil

Dans ce guide de démarrage rapide, vous allez créer un registreDe base. Il s’agit d’une option à coût optimisé pour les développeurs qui apprennent à se servir d’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.

Se connecter au registre

Avant d’envoyer (push) et de tirer (pull) des images conteneur, vous devez vous connecter au registre. Pour ce faire, utilisez la commande az acr login. Spécifiez seulement le nom du registre au moment de la connexion avec Azure CLI. N’utilisez pas le nom complet du serveur de connexion.

az acr login --name <registry-name>

Exemple :

az acr login --name mycontainerregistry

Une fois l’opération terminée, la commande retourne un message 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 d’envoyer (push) une image vers le registre, vous devez la marquer avec le nom complet de votre serveur de connexion au registre. Le nom du serveur de connexion est au format <nom-registre>.azurecr.io (obligatoirement tout en minuscules). Par exemple : monregistreconteneurs.azurecr.io.

Étiquetez l’image en utilisant la commande docker tag. Remplacez <login-server> par le nom du serveur de connexion de votre instance ACR.

docker tag mcr.microsoft.com/hello-world <login-server>/hello-world:v1

Exemple :

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é (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

L’exemple suivant liste les référentiels de votre registre :

az acr repository list --name <registry-name> --output table

Sortie :

Result
----------------
hello-world

L’exemple suivant liste les balises existantes sur le dépôt hello-world.

az acr repository show-tags --name <registry-name> --repository hello-world --output table

Sortie :

Result
--------
v1

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

Vous pouvez utiliser la commande az group delete pour supprimer le groupe de ressources, le registre de conteneurs et les images conteneur stockées à cet endroit quand vous n’en avez plus besoin.

az group delete --name myResourceGroup

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé un registre de conteneurs Azure avec Azure CLI, envoyé (push) une image conteneur au registre, 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.