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 buildles commandes et pushbuildAndPush .


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 buildAndPushde . 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