Créer des conteneurs à réutiliser

Utilisez ces recettes de conteneur pour créer des conteneurs Azure AI réutilisables. Les conteneurs peuvent être créés avec tout ou partie des paramètres de configuration de telle sorte qu’ils ne soient pas nécessaires au démarrage des conteneurs.

Dès lors que vous disposez de cette nouvelle couche de conteneur (avec des paramètres) et que vous l’avez testée localement, vous pouvez stocker le conteneur dans un registre de conteneurs. Au moment de démarrer, le conteneur n’aura besoin que des paramètres qui ne sont pas actuellement stockés dans celui-ci. Le conteneur de registre privé offre un espace de configuration qui vous permet de transmettre ces paramètres.

Syntaxe d’exécution Docker

Dans les exemples docker run de ce document, une console Windows avec un caractère de continuation de ligne ^ est censée être utilisée. Pour votre propre utilisation, tenez compte des points suivants :

  • Ne changez pas l’ordre des arguments, sauf si vous avez une connaissance approfondie des conteneurs docker.
  • Si vous utilisez un autre système d’exploitation que Windows ou une autre console que la console Windows, utilisez la console et/ou le terminal approprié, la syntaxe de dossier pour les montages et le caractère de continuation de ligne pour votre console et votre système. Le conteneur Azure AI Services étant un système d’exploitation Linux, le montage cible utilise une syntaxe de dossier de type Linux.
  • Les exemples docker run utilisent le répertoire du lecteur c: pour éviter tout conflit d’autorisation sur Windows. Si vous devez utiliser un répertoire spécifique en tant que répertoire d’entrée, vous devrez peut-être accorder au docker une autorisation de service.

Stocker aucun paramètre de configuration dans l’image

Les exemples de commandes docker run pour chaque service ne stockent aucun paramètre de configuration dans le conteneur. Quand vous démarrez le conteneur à partir d’une console ou d’un service de registre, ces paramètres de configuration doivent être transmis. Le conteneur de registre privé offre un espace de configuration qui vous permet de transmettre ces paramètres.

Recette réutilisable : stocker tous les paramètres de configuration avec le conteneur

Pour stocker tous les paramètres de configuration, créez un Dockerfile avec ces paramètres.

Problèmes de cette approche :

  • Le nom et la balise du nouveau conteneur sont différents de ceux du conteneur d’origine.
  • Pour modifier ces paramètres, vous devez modifier les valeurs du Dockerfile, recréer l’image et la republier dans votre registre.
  • Si des personnes ont accès à votre registre de conteneurs ou à votre hôte local, elles peuvent exécuter le conteneur et utiliser les points de terminaison Azure AI Services.
  • Si le service Azure AI que vous utilisez ne nécessite pas de montages d’entrée, n’ajoutez pas les COPY lignes à votre Dockerfile.

Créez le Dockerfile, en effectuant une extraction à partir du conteneur Azure AI Services existant que vous voulez utiliser, puis utilisez des commandes docker dans le Dockerfile pour définir ou extraire les informations dont a besoin le conteneur.

Cet exemple :

  • Définit le point de terminaison de facturation, {BILLING_ENDPOINT} à partir de la clé d’environnement de l’hôte en utilisant ENV.
  • Définit la clé API de facturation, {ENDPOINT_KEY} à partir de la clé d’environnement de l’hôte en utilisant `ENV.

Recette réutilisable : stocker les paramètres de facturation avec le conteneur

Cet exemple montre comment créer un conteneur de sentiments dans le Service de langage à partir d’un Dockerfile.

FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept

Créez et exécuter le conteneur localement ou à partir de votre registre de conteneurs privés, selon les besoins.

Recette réutilisable : stocker les paramètres de facturation et de montage avec le conteneur

Cet exemple montre comment utiliser Language Understanding, en enregistrant la facturation et les modèles à partir du Dockerfile.

  • Copie le fichier de modèle Language Understanding (LUIS) à partir du système de fichiers de l’hôte en utilisant COPY.
  • Le conteneur LUIS prend en charge plusieurs modèles. Si tous les modèles sont stockés dans le même dossier, vous avez besoin d’une seule instruction COPY.
  • Exécutez le fichier docker à partir du parent relatif du répertoire d’entrée du modèle. Pour l’exemple suivant, exécutez les commandes docker build et docker run à partir du parent relatif de /input. La première instance de /input de la commande COPY est le répertoire de l’ordinateur hôte. La deuxième instance de /input est le répertoire du conteneur.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input

Créez et exécuter le conteneur localement ou à partir de votre registre de conteneurs privés, selon les besoins.

Comment utiliser un conteneur sur votre hôte local

Pour créer un fichier Docker, remplacez <your-image-name> par le nouveau nom de l’image, puis utilisez :

docker build -t <your-image-name> .

Pour exécuter l’image et la supprimer à l’arrêt du conteneur (--rm) :

docker run --rm <your-image-name>

Comment ajouter un conteneur à un registre privé

Suivez ces étapes pour utiliser le Dockerfile et placer la nouvelle image dans votre registre de conteneurs privé.

  1. Créez un Dockerfile avec le texte de la recette réutilisable. Un Dockerfile n’a pas d’extension.

  2. Remplacez les valeurs entre chevrons par vos propres valeurs.

  3. Créez le fichier dans une image dans la ligne de commande ou un terminal en utilisant la commande suivante. Remplacez les valeurs entre chevrons, <>, par vos propres noms de balise et de conteneur.

    L’option de balise, -t, permet d’indiquer ce que vous avez changé pour le conteneur. Par exemple, le nom de conteneur modified-LUIS indique que le conteneur d’origine a été disposé en couches. Le nom de balise with-billing-and-model indique comment le conteneur Language Understanding (LUIS) a été modifié.

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Connectez-vous à Azure CLI à partir d’une console. Cette commande ouvre un navigateur et nécessite une authentification. Une fois authentifié, vous pouvez fermer le navigateur et continuer à travailler dans la console.

    az login
    
  5. Connectez-vous à votre registre privé avec Azure CLI à partir d’une console.

    Remplacez les valeurs entre chevrons, <my-registry>, par votre propre nom de registre.

    az acr login --name <my-registry>
    

    Vous pouvez aussi vous connecter avec un compte de connexion docker si un principal de service vous a été attribué.

    docker login <my-registry>.azurecr.io
    
  6. Balisez le conteneur avec l’emplacement du registre privé. Remplacez les valeurs entre chevrons, <my-registry>, par votre propre nom de registre.

    docker tag <your-new-container-name>:<your-new-tag-name> <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

    Si vous n’utilisez pas de nom de balise, latest est suggéré.

  7. Envoyez (push) la nouvelle image à votre registre de conteneurs privé. Quand vous affichez votre registre de conteneurs privé, le nom du conteneur utilisé dans la commande CLI suivante devient le nom du dépôt.

    docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

Étapes suivantes

Créer et utiliser une instance de conteneur Azure