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.
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.
Entradas
containerRegistry
-
Registro de contenedor
string
.
Nombre de la conexión de servicio de registro de Docker. Obligatorio para los comandos que realizan la autenticación con un registro.
repository
-
Repositorio de contenedores
string
. Opcional. Use cuando command != login && command != logout && command != start && command != stop
.
Especifica el nombre del repositorio.
repository
-
Repositorio de contenedores
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 de Docker que se va a ejecutar.
command
-
Comando
string
. Obligatorio. Valores permitidos: buildAndPush
, build
, push
, login
, . logout
Valor predeterminado: buildAndPush
.
Especifica el comando de Docker que se va a ejecutar.
Dockerfile
-
Dockerfile
string
. Necesario 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 busca para compilar la imagen.
buildContext
-
Contexto de compilación
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.
tags
-
Etiquetas
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 build
los comandos , push
y buildAndPush
.
arguments
-
Argumentos
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
del parámetro command, se omite la propiedad arguments.
Ejemplo: Uso del 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 ha creado la imagen. Puede rechazar este comportamiento predeterminado.
addBaseImageData
-
Adición de metadatos de imagen base a imágenes
boolean
. Valor predeterminado: true
.
De forma predeterminada, se agregan datos de imagen base como el nombre de la imagen base o el resumen y ayudan con la rastreabilidad. Puede rechazar este comportamiento predeterminado.
container
-
Contenedor
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 start
comandos y stop
.
Opciones de control de tareas
Todas las tareas tienen opciones de control además de las entradas de tareas. Para obtener más información, vea 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 buildAndPush
comando y una ruta de acceso de archivo para cualquier otro comando.
Comentarios
A continuación se muestran las principales ventajas de usar la tarea de Docker en lugar de usar directamente el 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 usado por la tarea de Docker. Por ejemplo, use la tarea de Docker para iniciar sesión en cualquier 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 mediante el comando buildAndPush
omite los argumentos que se pasan porque se vuelven 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 de Azure (SPN) 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 las demás del tipo de Registro y proporcione los detalles siguientes:
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 único comando.
El siguiente fragmento de código YAML es un ejemplo de creació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 containerRegistry
entrada 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
En el siguiente fragmento de código YAML se 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 binario del 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 de conveniencia (build
seguido de push
), arguments
la 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 |
Peticiones | None |
Capabilities | Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
Restricciones de comandos | Any |
Variables que se pueden establecer | Any |
Versión del agente | 2.172.0 o superior |
Categoría de la tarea: | Build |
Requisito | Descripción |
---|---|
Tipos de canalización | YAML, compilación clásica, versión clásica |
Se ejecuta en | Agente, DeploymentGroup |
Peticiones | None |
Capabilities | Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
Restricciones de comandos | Any |
Variables que se pueden establecer | Any |
Versión del agente | Todas las versiones de agente compatibles. |
Categoría de la tarea: | Build |