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 lecteurc:
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 utilisantENV
. - 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
etdocker run
à partir du parent relatif de/input
. La première instance de/input
de la commandeCOPY
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é.
Créez un
Dockerfile
avec le texte de la recette réutilisable. UnDockerfile
n’a pas d’extension.Remplacez les valeurs entre chevrons par vos propres valeurs.
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 conteneurmodified-LUIS
indique que le conteneur d’origine a été disposé en couches. Le nom de balisewith-billing-and-model
indique comment le conteneur Language Understanding (LUIS) a été modifié.docker build -t <your-new-container-name>:<your-new-tag-name> .
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
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
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é.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>