Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Générez ou envoyez (push) des images Docker, connectez-vous ou déconnectez-vous, démarrez ou arrêtez des conteneurs, ou exécutez une commande Docker.
Syntaxe
# Docker v2
# Build or push Docker images, login or logout, start or stop containers, or run a Docker command.
- task: Docker@2
inputs:
# Container Repository
#containerRegistry: # string. Container registry.
#repository: # string. Optional. Use when command != login && command != logout && command != start && command != stop. Container repository.
# Commands
command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout' | 'start' | 'stop'. Required. Command. Default: buildAndPush.
Dockerfile: '**/Dockerfile' # string. Required when command = build || command = buildAndPush. Dockerfile. Default: **/Dockerfile.
#buildContext: '**' # string. Optional. Use when command = build || command = buildAndPush. Build context. Default: **.
#tags: '$(Build.BuildId)' # string. Optional. Use when command = build || command = push || command = buildAndPush. Tags. Default: $(Build.BuildId).
#arguments: # string. Optional. Use when command != login && command != logout && command != buildAndPush. Arguments.
#addPipelineData: true # boolean. Add Pipeline metadata to image(s). Default: true.
#addBaseImageData: true # boolean. Add base image metadata to image(s). Default: true.
#container: # string. Optional. Use when command = start || command = stop. Container.
Entrées
containerRegistry
-
registre de conteneurs
string.
Nom de la connexion du service de Registre Docker . Requis pour les commandes qui effectuent l’authentification avec un registre.
repository
-
référentiel de conteneurs
string. Optionnel. Utilisez quand command != login && command != logout && command != start && command != stop.
Spécifie le nom du référentiel.
command
-
commande
string. Obligatoire. Valeurs autorisées : buildAndPush, build, push, login, logout, start, stop. Valeur par défaut : buildAndPush.
Spécifie la commande Docker à exécuter.
Dockerfile
-
Dockerfile
string. Obligatoire lorsque command = build || command = buildAndPush. Valeur par défaut : **/Dockerfile.
Spécifie le chemin d’accès au fichier Docker. La tâche utilise le premier fichier Docker trouvé pour générer l’image.
buildContext
-
de contexte de génération
string. Optionnel. Utilisez quand command = build || command = buildAndPush. Valeur par défaut : **.
Spécifie le chemin d’accès au contexte de build. Transmettez ** pour indiquer le répertoire qui contient le fichier Docker.
tags
-
balises
string. Optionnel. Utilisez quand command = build || command = push || command = buildAndPush. Valeur par défaut : $(Build.BuildId).
Spécifie une liste de balises séparées par des virgules. Ces balises sont utilisées dans les commandes build, push et buildAndPush.
arguments
-
arguments
string. Optionnel. Utilisez quand command != login && command != logout && command != buildAndPush.
Spécifie des arguments supplémentaires à passer au client Docker. Si vous utilisez la valeur buildAndPush pour le paramètre de commande, la propriété arguments est ignorée.
Exemple : utilisation de la commande build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.
addPipelineData
-
Ajouter des métadonnées de pipeline à des images
boolean. Valeur par défaut : true.
Par défaut, les données de pipeline telles que le nom de la branche source ou l’ID de build sont ajoutées et aident à la traçabilité. Par exemple, vous pouvez inspecter une image pour savoir quel pipeline a généré l’image. Vous pouvez désactiver ce comportement par défaut.
addBaseImageData
-
Ajouter des métadonnées d’image de base aux images
boolean. Valeur par défaut : true.
Par défaut, les données d’image de base, telles que le nom de l’image de base, ou digest, sont ajoutées et aident à la traçabilité. Vous pouvez désactiver ce comportement par défaut.
container
-
conteneur
string. Optionnel. Utilisez quand command = start || command = stop.
Spécifie le nom de la ressource de conteneur à démarrer ou arrêter. Utilisez cette commande avec des commandes start et stop.
Options de contrôle de la tâche
Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.
Variables de sortie
Cette tâche définit les variables de sortie suivantes, que vous pouvez utiliser en aval, les travaux et les étapes.
DockerOutput
Spécifie le chemin d’accès aux fichiers qui contiennent la sortie de commande. Vous pouvez répertorier deux chemins d’accès de fichier sur des lignes distinctes pour la commande buildAndPush et un chemin d’accès de fichier pour toute autre commande.
Remarques
Voici les principaux avantages de l’utilisation de la tâche Docker au lieu d’utiliser directement le fichier binaire client Docker dans un script.
Intégration à la connexion de service de Registre Docker : la tâche facilite l’utilisation d’une connexion de service de Registre Docker pour la connexion à n’importe quel registre de conteneurs. Une fois connecté, vous pouvez ajouter des tâches de suivi qui exécutent d’autres tâches ou scripts en tirant parti de l’authentification utilisée par la tâche Docker. Par exemple, utilisez la tâche Docker pour vous connecter à n’importe quel Registre de conteneurs Azure, puis utilisez une autre tâche ou un script pour générer et envoyer une image au Registre.
Métadonnées ajoutées en tant qu’étiquettes : la tâche ajoute des métadonnées liées à la traçabilité à l’image dans les étiquettes suivantes :
- com.azure.dev.image.build.buildnumber
- com.azure.dev.image.build.builduri
- com.azure.dev.image.build.definitionname
- com.azure.dev.image.build.repository.name
- com.azure.dev.image.build.repository.uri
- com.azure.dev.image.build.sourcenombranche
- com.azure.dev.image.build.sourceversion
- com.azure.dev.image.release.definitionname
- com.azure.dev.image.release.releaseid
- com.azure.dev.image.release.releaseweburl
- com.azure.dev.image.system.teamfoundationcollectionuri
- com.azure.dev.image.system.teamproject
Résolution des problèmes
Pourquoi la tâche Docker ignore-t-elle les arguments passés à la commande buildAndPush ?
Une tâche Docker configurée à l’aide de la commande buildAndPush ignore les arguments passés, car ils deviennent ambigus pour la génération interne et les commandes push. Vous pouvez fractionner votre commande en étapes de génération et d’envoi (push) distinctes et passer les arguments appropriés. Par exemple, consultez ce post StackOverflow.
DockerV2 prend uniquement en charge la connexion de service de Registre Docker et ne prend pas en charge la connexion de service ARM. Comment puis-je utiliser un principal de service Azure existant (SPN) pour l’authentification dans la tâche Docker ?
Vous pouvez créer une connexion au service du registre Docker à l’aide de vos informations d’identification SPN Azure. Choisissez les autres types de Registre et fournissez les détails comme suit :
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Exemples
Connectez-vous
L’extrait de code YAML suivant montre une connexion au registre de conteneurs à l’aide d’une connexion de service de Registre Docker.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Générer et envoyer (push)
Une commande pratique appelée buildAndPush permet la génération et l’envoi d’images à un registre de conteneurs dans une seule commande.
L’extrait de code YAML suivant est un exemple de génération et d’envoi (push) de plusieurs balises d’une image à plusieurs registres.
steps:
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
- task: Docker@2
displayName: Login to Docker Hub
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection2
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
repository: contosoRepository # username/contosoRepository for DockerHub
tags: |
tag1
tag2
Dans l’extrait de code ci-dessus, les images contosoRepository:tag1 et les contosoRepository:tag2 sont générées et envoyées (push) aux registres de conteneurs correspondant à dockerRegistryServiceConnection1 et dockerRegistryServiceConnection2.
Si vous souhaitez générer et envoyer (push) à un registre de conteneurs authentifié spécifique au lieu de générer et d’envoyer (push) à tous les registres de conteneurs authentifiés à la fois, spécifiez explicitement l’entrée containerRegistry avec command: buildAndPush comme indiqué :
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Déconnexion
L’extrait de code YAML suivant montre comment se déconnecter d’un registre de conteneurs à l’aide d’une connexion de service de Registre Docker.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Démarrer/arrêter
Utilisez cette tâche pour contrôler les conteneurs de travaux et de service. Cette utilisation est rare, mais parfois utilisée dans des circonstances uniques.
resources:
containers:
- container: builder
image: ubuntu:18.04
steps:
- script: echo "I can run inside the container (it starts by default)"
target:
container: builder
- task: Docker@2
inputs:
command: stop
container: builder
# any task beyond this point would not be able to target the builder container
# because it's been stopped
Autres commandes et arguments
Les entrées de commande et d’argument sont utilisées pour passer des arguments supplémentaires pour les commandes de génération ou push à l’aide du fichier binaire client Docker, comme indiqué dans l’exemple.
steps:
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
- task: Docker@2
displayName: Build
inputs:
command: build
repository: contosoRepository # username/contosoRepository for DockerHub
tags: tag1
arguments: --secret id=mysecret,src=mysecret.txt
Remarque
L’entrée des arguments est évaluée pour toutes les commandes, sauf buildAndPush.
buildAndPush est une commande pratique (build suivie de push), arguments entrée est ignorée lorsqu’elle est utilisée.
Spécifications
| Besoin | Descriptif |
|---|---|
| Types de pipelines | YAML, Build Classique, Version Classique |
| Exécutions sur | Agent, Groupe de déploiement |
| demandes | Aucun |
| fonctionnalités de | Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail. |
| restrictions de commande | N'importe quel |
| variables settables | N'importe quel |
| Version de l’agent | 2.172.0 ou version ultérieure |
| Catégorie de tâche | Construire |