Exercice : Créer et exécuter une image conteneur en utilisant Azure Container Registry Tasks

Effectué

Dans cet exercice, vous utilisez ACR Tasks pour effectuer les actions suivantes :

  • Création d’un Azure Container Registry
  • Générer et envoyer (push) une image à partir d’un Dockerfile
  • Vérifier les résultats
  • Exécuter l’image dans ACR

Prérequis

  • Un compte Azure avec un abonnement actif. Si vous n’en avez pas, vous pouvez vous inscrire à une évaluation gratuite sur https://azure.com/free.

Connexion à Azure et lancement de Cloud Shell

  1. Connectez-vous au portail Azure, puis ouvrez Cloud Shell.

    The location of Cloud Shell launch button.

  2. Une fois le shell ouvert, sélectionnez l’environnement Bash.

    Selecting the Bash environment.

Création d’un Azure Container Registry

  1. Créez un groupe de ressources pour le registre, remplacez <myLocation> dans la commande suivante par une région près de vous.

    az group create --name az204-acr-rg --location <myLocation>
    
  2. Créez un registre de conteneurs simple. Le nom du registre doit être unique dans Azure et contenir entre 5 et 50 caractères alphanumériques. Remplacez <myContainerRegistry> dans la commande suivante par une valeur unique.

    az acr create --resource-group az204-acr-rg \
        --name <myContainerRegistry> --sku Basic
    

    Notes

    La commande crée un registre simple, une option à coût optimisé pour les développeurs qui découvrent Azure Container Registry.

Générer et envoyer (push) une image à partir d’un Dockerfile

À présent, utilisez Azure Container Registry pour créer et pousser une image basée sur un Dockerfile local.

  1. Créez ou accédez à un répertoire local, puis utilisez la commande suivante pour créer le Dockerfile. Le Dockerfile contient une seule ligne qui référence l’image hello-world hébergée dans Microsoft Container Registry.

    echo FROM mcr.microsoft.com/hello-world > Dockerfile
    
  2. Exécutez la commande az acr build, qui crée l’image et, une fois que l’image a été créée, la pousse dans votre registre. Remplacez <myContainerRegistry> par le nom que vous avez utilisé précédemment.

    az acr build --image sample/hello-world:v1  \
        --registry <myContainerRegistry> \
        --file Dockerfile .
    

    Voici un court échantillon de la sortie de la commande précédente montrant les dernières lignes avec les résultats finaux. Vous pouvez voir dans le champ repository que l’image sample/hello-word est listée.

    - image:
        registry: <myContainerRegistry>.azurecr.io
        repository: sample/hello-world
        tag: v1
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      runtime-dependency:
        registry: mcr.microsoft.com
        repository: hello-world
        tag: latest
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      git: {}
    
    
    Run ID: cf1 was successful after 11s
    

Vérifier les résultats

  1. Utilisez la commande az acr repository list pour lister les dépôts de votre registre. Remplacez <myContainerRegistry> par le nom que vous avez utilisé précédemment.

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

    Sortie :

    Result
    ----------------
    sample/hello-world
    
  2. Utilisez la commande az acr repository show-tags pour lister les étiquettes du registre sample/hello-word. Remplacez <myContainerRegistry> par le nom que vous avez utilisé précédemment.

    az acr repository show-tags --name <myContainerRegistry> \
        --repository sample/hello-world --output table
    

    Sortie :

    Result
    --------
    v1
    

Exécuter l’image dans ACR

  1. Exécutez l’image conteneur sample/hello-world:v1 à partir de votre registre de conteneurs en utilisant la commande az acr run. L’exemple suivant utilise $Registry pour spécifier le registre dans lequel vous exécutez la commande. Remplacez <myContainerRegistry> par le nom que vous avez utilisé précédemment.

    az acr run --registry <myContainerRegistry> \
        --cmd '$Registry/sample/hello-world:v1' /dev/null
    

    Le paramètre cmd dans cet exemple exécute le conteneur dans sa configuration par défaut, mais cmd prend en charge d’autres paramètres docker run ou même d’autres commandes docker.

    Voici un court échantillon de la sortie :

    Packing source code into tar to upload...
    Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
    Sending context (1.855 KiB) to registry: mycontainerre...
    Queued a run with ID: cab
    Waiting for an agent...
    2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
    2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
    2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network
    2019/03/19 19:01:53 Setting up Docker configuration...
    2019/03/19 19:01:54 Successfully set up Docker configuration
    2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
    2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
    2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
    2019/03/19 19:01:55 Launching container with name: acb_step_0
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    2019/03/19 19:01:56 Successfully executed container: acb_step_0
    2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)
    
    Run ID: cab was successful after 6s
    

Nettoyer les ressources

Quand vous n’en avez plus besoin, vous pouvez utiliser la commande az group delete pour supprimer le groupe de ressources, le registre de conteneurs et les images conteneur qui y sont stockées.

az group delete --name az204-acr-rg --no-wait