Docker@2 - Tâche Docker v2
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.
Générez ou envoyez (push) des images Docker, connectez-vous ou déconnectez-vous, ou exécutez une commande Docker.
Syntax
# 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.
# 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.
#container: # string. Optional. Use when command = start || command = stop. Container.
# Docker v2
# Build or push Docker images, login or logout, or run a Docker command.
- task: Docker@2
inputs:
# Container Repository
#containerRegistry: # string. Container registry.
#repository: # string. Optional. Use when command != login && command != logout. Container repository.
# Commands
command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout'. 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.
# Docker v2
# Build or push Docker images, login or logout, or run a Docker command.
- task: Docker@2
inputs:
# Container Repository
#containerRegistry: # string. Container registry.
#repository: # string. Optional. Use when command != login && command != logout. Container repository.
# Commands
command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout'. 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.
Entrées
containerRegistry
-
Registre de conteneurs
string
.
Nom de la connexion de service de registre Docker. Obligatoire pour les commandes qui effectuent l’authentification auprès d’un registre.
repository
-
Référentiel de conteneurs
string
. facultatif. Utilisez quand command != login && command != logout && command != start && command != stop
.
Spécifie le nom du dépôt.
repository
-
Référentiel de conteneurs
string
. facultatif. Utilisez quand command != login && command != logout
.
Spécifie le nom du dépôt.
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.
command
-
Commande
string
. Obligatoire. Valeurs autorisées : buildAndPush
, build
, push
, login
, logout
. Valeur par défaut : buildAndPush
.
Spécifie la commande Docker à exécuter.
Dockerfile
-
Dockerfile
string
. Nécessaire 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 qu’elle trouve pour générer l’image.
buildContext
-
Contexte de génération
string
. facultatif. Utilisez quand command = build || command = buildAndPush
. Valeur par défaut : **
.
Spécifie le chemin d’accès au contexte de génération.
**
Passez pour indiquer le répertoire qui contient le fichier Docker.
tags
-
Étiquettes
string
. facultatif. 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 build
les commandes et push
buildAndPush
.
arguments
-
Arguments
string
. facultatif. 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 : à l’aide 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, comme le nom de la branche source ou l’ID de build, sont ajoutées et facilitent la traçabilité. Par exemple, vous pouvez inspecter une image pour déterminer 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 à des 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 la synthèse sont ajoutées et facilitent la traçabilité. Vous pouvez désactiver ce comportement par défaut.
container
-
Conteneur
string
. facultatif. Utilisez quand command = start || command = stop
.
Spécifie le nom de la ressource de conteneur à démarrer ou à arrêter. Utilisez cette commande avec start
les commandes 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 dans les étapes, les travaux et les étapes en aval.
DockerOutput
Spécifie le chemin d’accès aux fichiers qui contiennent la sortie de la commande. Vous pouvez répertorier deux chemins d’accès de fichiers sur des lignes distinctes pour la buildAndPush
commande, 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 du client Docker dans un script.
Intégration à la connexion au 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 Azure Container Registry, puis utilisez une autre tâche ou un autre script pour générer et envoyer (push) 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.sourcebranchname
- 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
Dépannage
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 les commandes internes de génération et d’envoi (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 au service de registre Docker et ne prend pas en charge la connexion de service ARM. Comment utiliser un principal de service Azure existant pour l’authentification dans une 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
Connexion
L’extrait de code YAML suivant montre une authentification au registre de conteneurs à l’aide d’une connexion au 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 de générer et d’envoyer (push) des 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 vers 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 contosoRepository:tag2
sont générées et envoyées aux registres de conteneurs correspondant à dockerRegistryServiceConnection1
et dockerRegistryServiceConnection2
.
Si vous souhaitez générer et envoyer (push) vers 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
Logout
L’extrait de code YAML suivant montre comment se déconnecter d’un registre de conteneurs à l’aide d’une connexion au 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 services. 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 binaire client Docker, comme illustré 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
Notes
L’entrée d’arguments est évaluée pour toutes les commandes à l’exception buildAndPush
de .
buildAndPush
est une commande pratique (build
suivie de push
), arguments
l’entrée est ignorée lorsqu’elle est utilisée.
Configuration requise
Condition requise | Description |
---|---|
Types de pipelines | YAML, build classique, version classique |
S’exécute sur | Agent, DeploymentGroup |
Demandes | None |
Capabilities | Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail. |
Restrictions de commande | Quelconque |
Variables paramétrables | Quelconque |
Version de l’agent | 2.172.0 ou version ultérieure |
Catégorie de la tâche | Build |
Condition requise | Description |
---|---|
Types de pipelines | YAML, build classique, version classique |
S’exécute sur | Agent, DeploymentGroup |
Demandes | None |
Capabilities | Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail. |
Restrictions de commande | Quelconque |
Variables paramétrables | Quelconque |
Version de l’agent | Toutes les versions d’agent prises en charge. |
Catégorie de la tâche | Build |