Compartir a través de


Docker@2: tarea de Docker v2

Compile o inserte imágenes de Docker, inicie sesión o cierre sesión, inicie o detenga contenedores, o ejecute un comando de Docker.

Compile o inserte imágenes de Docker, inicie sesión o cierre sesión o ejecute un comando de Docker.

Sintaxis

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

Entradas

containerRegistry - Container Registry
string.

Nombre de la conexión del servicio del registro de Docker . Necesario para los comandos que realizan la autenticación con un registro.


del repositorio de contenedor de repository -
string. Opcional. Use cuando command != login && command != logout && command != start && command != stop.

Especifica el nombre del repositorio.


del repositorio de contenedor de repository -
string. Opcional. Use cuando command != login && command != logout.

Especifica el nombre del repositorio.


command - comando
string. Obligatorio. Valores permitidos: buildAndPush, build, push, login, logout, start, stop. Valor predeterminado: buildAndPush.

Especifica el comando docker que se va a ejecutar.


command - comando
string. Obligatorio. Valores permitidos: buildAndPush, build, push, login, logout. Valor predeterminado: buildAndPush.

Especifica el comando docker que se va a ejecutar.


Dockerfile - dockerfile
string. Obligatorio cuando command = build || command = buildAndPush. Valor predeterminado: **/Dockerfile.

Especifica la ruta de acceso al archivo de Docker. La tarea usa el primer archivo de Docker que encuentra para compilar la imagen.


de contexto de compilación de buildContext -
string. Opcional. Use cuando command = build || command = buildAndPush. Valor predeterminado: **.

Especifica la ruta de acceso al contexto de compilación. Pase ** para indicar el directorio que contiene el archivo de Docker.


etiquetas de tags -
string. Opcional. Use cuando command = build || command = push || command = buildAndPush. Valor predeterminado: $(Build.BuildId).

Especifica una lista de etiquetas separadas por comas. Estas etiquetas se usan en comandos build, push y buildAndPush.


argumentos de
string. Opcional. Use cuando command != login && command != logout && command != buildAndPush.

Especifica argumentos adicionales que se van a pasar al cliente de Docker. Si usa el valor buildAndPush para el parámetro command, se omite la propiedad arguments.

Ejemplo: Mediante el comando build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - Agregar metadatos de canalización a imágenes
boolean. Valor predeterminado: true.

De forma predeterminada, se agregan datos de canalización como el nombre de la rama de origen o el identificador de compilación y ayudan con la rastreabilidad. Por ejemplo, puede inspeccionar una imagen para averiguar qué canalización creó la imagen. Puede rechazar este comportamiento predeterminado.


addBaseImageData - Agregar metadatos de imagen base a imágenes
boolean. Valor predeterminado: true.

De forma predeterminada, los datos de imagen base, como el nombre de la imagen base, o el resumen, se agregan y ayudan con la rastreabilidad. Puede rechazar este comportamiento predeterminado.


de contenedor de container -
string. Opcional. Use cuando command = start || command = stop.

Especifica el nombre del recurso de contenedor que se va a iniciar o detener. Use este comando con comandos start y stop.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.

Variables de salida

Esta tarea define las siguientes variables de salida , que puede consumir en pasos, trabajos y fases de bajada.

DockerOutput
Especifica la ruta de acceso a los archivos que contienen la salida del comando. Puede enumerar dos rutas de acceso de archivo en líneas independientes para el comando buildAndPush y una ruta de acceso de archivo para cualquier otro comando.

Observaciones

A continuación se muestran las principales ventajas de usar la tarea docker en lugar de usar directamente el archivo binario de cliente de Docker en un script.

  • integración con la conexión del servicio del registro de Docker: la tarea facilita el uso de una conexión de servicio del registro de Docker para conectarse a cualquier registro de contenedor. Una vez que haya iniciado sesión, puede agregar tareas de seguimiento que ejecuten otras tareas o scripts aprovechando el inicio de sesión que usa la tarea de Docker. Por ejemplo, use la tarea docker para iniciar sesión en cualquier instancia de Azure Container Registry y, a continuación, use otra tarea o script para compilar e insertar una imagen en el registro.

  • Metadatos agregados como etiquetas: la tarea agrega metadatos relacionados con la rastreabilidad a la imagen en las etiquetas siguientes:

    • 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

Solución de problemas

¿Por qué la tarea docker omite los argumentos pasados al comando buildAndPush?

Una tarea de Docker configurada con el comando buildAndPush omite los argumentos pasados porque se convierten en ambiguos para los comandos internos de compilación e inserción. Puede dividir el comando en pasos de compilación e inserción independientes y pasar los argumentos adecuados. Por ejemplo, consulte esta publicación de stackoverflow.

DockerV2 solo admite la conexión del servicio del registro de Docker y no admite la conexión del servicio ARM. ¿Cómo puedo usar una entidad de servicio (SPN) de Azure existente para la autenticación en la tarea de Docker?

Puede crear una conexión de servicio del registro de Docker mediante las credenciales de SPN de Azure. Elija los demás en Tipo de Registro y proporcione los detalles como se indica a continuación:

Docker Registry:    Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID:          Service principal client ID
Password:           Service principal key

Ejemplos

Iniciar sesión

El siguiente fragmento de código YAML muestra un inicio de sesión del registro de contenedor mediante una conexión de servicio del registro de Docker.

- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1

Compilación e inserción

Un comando cómodo denominado buildAndPush permite la compilación e inserción de imágenes en un registro de contenedor en un solo comando.

El siguiente fragmento de código YAML es un ejemplo de compilación e inserción de varias etiquetas de una imagen en varios registros.

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

En el fragmento de código anterior, las imágenes contosoRepository:tag1 y contosoRepository:tag2 se compilan e insertan en los registros de contenedor correspondientes a dockerRegistryServiceConnection1 y dockerRegistryServiceConnection2.

Si desea compilar e insertar en un registro de contenedor autenticado específico en lugar de compilar e insertar en todos los registros de contenedor autenticados a la vez, especifique explícitamente la entrada de containerRegistry con command: buildAndPush como se muestra:

steps:
- task: Docker@2
  displayName: Build and Push
  inputs:
    command: buildAndPush
    containerRegistry: dockerRegistryServiceConnection1
    repository: contosoRepository
    tags: |
      tag1
      tag2

Logout

El siguiente fragmento de código YAML muestra cómo cerrar sesión desde un registro de contenedor mediante una conexión de servicio del registro de Docker.

- task: Docker@2
  displayName: Logout of ACR
  inputs:
    command: logout
    containerRegistry: dockerRegistryServiceConnection1

Arranque/parada

Use esta tarea para controlar los contenedores de trabajos y servicios. Este uso es poco común, pero en ocasiones se usa en circunstancias únicas.

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

Otros comandos y argumentos

Las entradas de comando y argumento se usan para pasar argumentos adicionales para comandos de compilación o inserción mediante el archivo binario de cliente de Docker, como se muestra en el ejemplo.

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

Nota:

La entrada de argumentos se evalúa para todos los comandos, excepto buildAndPush. buildAndPush es un comando cómodo (build seguido de push), arguments entrada se omite cuando se usa.

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
demandas Ninguno
funcionalidades de Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
restricciones de comandos Cualquiera
variables settable Cualquiera
Versión del agente 2.172.0 o superior
Categoría de tarea Construir
Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
demandas Ninguno
funcionalidades de Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
restricciones de comandos Cualquiera
variables settable Cualquiera
Versión del agente Todas las versiones de agente admitidas.
Categoría de tarea Construir