Partager via


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.

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