Déployer une image Docker sur une instance de conteneur Azure

Effectué

Azure Container Instances est un service qui charge et exécute les images Docker à la demande. Le service Azure Container Instances peut récupérer une image à partir d’un registre tel que Docker Hub ou Azure Container Registry.

Votre organisation souhaite utiliser Azure pour exécuter ses applications web. Pour cette raison, il est judicieux de stocker les images dans Azure Container Registry, puis de les exécuter à l’aide du service Azure Container Instances.

Dans cette unité, vous allez voir comment charger une image Docker dans Azure Container Registry. Ensuite, vous allez exécuter l’image à l’aide du service Azure Container Instances.

Utiliser Azure Container Registry pour stocker un conteneur

Azure Container Registry est un service d’hébergement de registres fourni par Azure. Chaque ressource Azure Container Registry que vous créez est un registre distinct avec une URL unique. Ces registres sont privés, c’est-à-dire qu’ils demandent une authentification pour pousser (push) et tirer (pull) les images. Azure Container Registry s’exécute dans le cloud et fournit des niveaux de scalabilité et de disponibilité similaires à ceux des autres services Azure.

Vous pouvez créer un registre à l’aide du portail Azure ou de l’interface de ligne de commande (CLI) d’Azure. Vous pouvez utiliser Cloud Shell dans le portail Azure ou une installation locale d’Azure CLI. Gardez à l’esprit que vous devrez créer un groupe de ressources avant de pouvoir créer le registre. Lorsque vous créez un groupe de ressources, nous vous recommandons de choisir la région la plus proche. Dans cet exemple, le nom de notre groupe de ressources est mygroup, et l’emplacement USA Ouest.

Vous n’avez pas besoin d’exécuter les commandes suivantes. Nous verrons cela dans l’exercice suivant.

Remarque

Vous avez besoin d’un nom unique pour votre conteneur. Pour vérifier si un nom est déjà utilisé, cliquez ici.

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

Différentes références SKU fournissent différents niveaux de stockage et de scalabilité.

Les dépôts Azure Container Registry sont privés, c’est-à-dire qu’ils ne prennent pas en charge les accès non authentifiés. Pour tirer des images d’un dépôt Azure Container Registry, utilisez la commande docker login et spécifiez l’URL du serveur de connexion pour le registre. L’URL du serveur de connexion pour un registre dans Azure Container Registry a le format <nom_registre>.azurecr.io.

docker login myregistry.azurecr.io

Docker login vous invite à entrer un nom d’utilisateur et un mot de passe. Pour trouver ces informations, accédez au portail Azure pour rechercher les clés d’accès du registre, ou exécutez la commande suivante.

az acr credential show --name myregistry --resource-group mygroup

Vous poussez une image de votre ordinateur local vers un registre Docker en utilisant la commande docker push. Avant d’envoyer (push) une image, vous devez créer un alias pour l’image qui spécifie le dépôt et l’étiquette créés par le registre Docker. Le nom du dépôt doit avoir le format *<login_server>/<image_name>:<tag/>. Utilisez la commande docker tag pour effectuer cette opération. L’exemple suivant crée un alias pour l’image reservationsystem.

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

Si vous exécutez docker image ls, vous verrez deux entrées pour l’image : l’une avec le nom d’origine, l’autre avec le nouvel alias.

Après avoir exécuté la commande tag, vous pouvez charger l’image dans le registre dans Azure Container Registry à l’aide de la commande suivante.

docker push myregistry.azurecr.io/reservationsystem:v2

Vérifiez que l’image a été correctement chargée en listant les dépôts du registre avec la commande suivante.

az acr repository list --name myregistry --resource-group mygroup

Vous pouvez aussi lister les images dans le registre avec la commande acr repository show.

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

Notes

Dans un dépôt, chaque image présente au moins deux étiquettes. Une étiquette sera la valeur que vous avez spécifiée dans la commande acr build (v1 dans l’exemple précédent). L’autre est latest. Chaque fois que vous regénérez une image, Azure Container Registry crée automatiquement l’étiquette latest en tant qu’alias pour la version la plus récente de l’image.

Utiliser Azure Container Instances pour exécuter une image

Le service Azure Container Instances peut charger une image à partir d’Azure Container Registry et l’exécuter dans Azure.

Vous créez une instance de conteneur et démarrez l’exécution de l’image avec la commande az container create. Fournissez le nom d’utilisateur et le mot de passe du registre dans les paramètres registry-username et registry-password. L’instance se verra allouer une adresse IP. Vous accédez à l’instance avec cette adresse IP. Vous pouvez éventuellement spécifier un nom DNS si vous préférez référencer l’instance par le biais d’une étiquette plus conviviale. Notez que vous spécifiez l’image en tant qu’URL qui référence votre registre (myregistry) dans le service Azure Container Registry (azurecr.io). Si vous utilisez Docker Hub ou un autre registre, remplacez cette URL par celle de votre image dans ce registre.

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

Azure héberge l’instance avec un nom de domaine basé sur l’étiquette DNS que vous avez spécifiée. Vous pouvez trouver le nom de domaine complet de l’instance en interrogeant l’adresse IP de celle-ci.

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

Vous pouvez accéder à l’application à l’aide d’un navigateur web. Vous pouvez accéder à l’URL retournée par cette commande. Nous découvrirons comment procéder dans l’unité suivante.