tarefa Docker@2 - Docker v2
Crie ou envie por push imagens do Docker, faça logon ou faça logoff, inicie ou interrompa contêineres ou execute um comando do Docker.
Crie ou envie por push imagens do Docker, faça logon ou faça logoff ou execute um comando do 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 contêiner
string
.
Nome da conexão de serviço do Registro do Docker. Necessário para comandos que executam a autenticação com um registro.
repository
-
Repositório de contêineres
string
. Opcional. Use quando command != login && command != logout && command != start && command != stop
.
Especifica o nome do repositório.
repository
-
Repositório de contêineres
string
. Opcional. Use quando command != login && command != logout
.
Especifica o nome do repositório.
command
-
Comando
string
. Obrigatórios. Valores permitidos: buildAndPush
, build
, , push
, login
, logout
, start
, stop
. Valor padrão: buildAndPush
.
Especifica o comando docker a ser executado.
command
-
Comando
string
. Obrigatórios. Valores permitidos: buildAndPush
, , build
, push
, login
, logout
. Valor padrão: buildAndPush
.
Especifica o comando docker a ser executado.
Dockerfile
-
Dockerfile
string
. Obrigatório quando command = build || command = buildAndPush
. Valor padrão: **/Dockerfile
.
Especifica o caminho para o arquivo do Docker. A tarefa usa o primeiro arquivo do Docker encontrado para compilar a imagem.
buildContext
-
Contexto de build
string
. Opcional. Use quando command = build || command = buildAndPush
. Valor padrão: **
.
Especifica o caminho para o contexto de build. Passe **
para indicar o diretório que contém o arquivo do Docker.
tags
-
Tags
string
. Opcional. Use quando command = build || command = push || command = buildAndPush
. Valor padrão: $(Build.BuildId)
.
Especifica uma lista de marcas separadas por vírgulas. Essas marcas são usadas nos build
comandos e push
buildAndPush
.
arguments
-
Argumentos
string
. Opcional. Use quando command != login && command != logout && command != buildAndPush
.
Especifica argumentos adicionais a serem passados para o cliente docker. Se estiver usando o valor buildAndPush
para o parâmetro de comando, a propriedade arguments será ignorada.
Exemplo: usando o comando de build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Adicionar metadados de pipeline a imagens
boolean
. Valor padrão: true
.
Por padrão, dados de pipeline, como nome do branch de origem ou ID de build, são adicionados e ajudam na rastreabilidade. Por exemplo, você pode inspecionar uma imagem para descobrir qual pipeline criou a imagem. Você pode recusar esse comportamento padrão.
addBaseImageData
-
Adicionar metadados de imagem base a imagens
boolean
. Valor padrão: true
.
Por padrão, os dados de imagem base, como o nome da imagem base ou o resumo, são adicionados e ajudam na rastreabilidade. Você pode recusar esse comportamento padrão.
container
-
Recipiente
string
. Opcional. Use quando command = start || command = stop
.
Especifica o nome do recurso de contêiner a ser iniciado ou interrompido. Use este comando com start
comandos e stop
.
Opções de controle da tarefa
Todas as tarefas têm opções de controle além de suas entradas de tarefa. Para obter mais informações, consulte Opções de controle e propriedades comuns da tarefa.
Variáveis de saída
Essa tarefa define as variáveis de saída a seguir, que você pode consumir em etapas downstream, trabalhos e estágios.
DockerOutput
Especifica o caminho para os arquivos que contêm a saída do comando. Você pode listar dois caminhos de arquivo em linhas separadas para o buildAndPush
comando e um caminho de arquivo para qualquer outro comando.
Comentários
Veja a seguir os principais benefícios de usar a tarefa docker em vez de usar diretamente o binário do cliente docker em um script.
Integração com a conexão de serviço do Registro do Docker – a tarefa facilita o uso de uma conexão de serviço do Registro do Docker para se conectar a qualquer registro de contêiner. Depois de entrar, você pode adicionar tarefas de acompanhamento que executam outras tarefas ou scripts aproveitando o logon usado pela tarefa do Docker. Por exemplo, use a tarefa docker para entrar em qualquer Registro de Contêiner do Azure e, em seguida, use outra tarefa ou script para compilar e enviar uma imagem por push para o Registro.
Metadados adicionados como rótulos – a tarefa adiciona metadados relacionados à rastreabilidade à imagem nos rótulos a seguir –
- 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
Solução de problemas
Por que a tarefa do Docker ignora os argumentos passados para o comando buildAndPush?
Uma tarefa do Docker configurada usando o comando buildAndPush
ignora os argumentos passados porque eles se tornam ambíguos em relação aos comandos build e push internos. Você pode dividir seu comando em etapas separadas de compilação e push e transmitir os argumentos adequados. Por exemplo, consulte esta postagem do stackoverflow.
O DockerV2 só dá suporte à conexão de serviço do Registro do Docker e não dá suporte à conexão de serviço do ARM. Como posso usar uma SPN (entidade de serviço) do Azure existente para autenticação na tarefa do Docker?
Você pode criar uma conexão com o serviço de registro do Docker utilizando suas credenciais de SPN do Azure. Escolha os outros do tipo Registro e forneça os detalhes da seguinte maneira:
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Exemplos
Logon
O snippet yaml a seguir mostra um logon do Registro de Contêiner usando uma conexão de serviço do Registro do Docker.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Compilar e enviar por push
Um comando de conveniência chamado buildAndPush
permite o build e o envio por push de imagens para um registro de contêiner em um único comando.
O snippet yaml a seguir é um exemplo de criação e envio por push de várias marcas de uma imagem para vários 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
No snippet acima, as imagens contosoRepository:tag1
e contosoRepository:tag2
são criadas e enviadas por push para os registros de contêiner correspondentes a dockerRegistryServiceConnection1
e dockerRegistryServiceConnection2
.
Se você quiser compilar e enviar por push para um registro de contêiner autenticado específico em vez de criar e enviar por push para todos os registros de contêiner autenticados de uma só vez, especifique explicitamente a containerRegistry
entrada com command: buildAndPush
, conforme mostrado:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Logout
O snippet yaml a seguir mostra como fazer logoff de um registro de contêiner usando uma conexão de serviço do Registro do Docker.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Iniciar/parar
Use essa tarefa para controlar contêineres de trabalho e serviço. Esse uso é incomum, mas ocasionalmente usado em circunstâncias ú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
Outros comandos e argumentos
As entradas de comando e argumento são usadas para passar argumentos adicionais para comandos de build ou push usando o binário de cliente do Docker, conforme mostrado no exemplo.
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
Observação
A entrada de argumentos é avaliada para todos os comandos, exceto buildAndPush
.
buildAndPush
é um comando de conveniência (build
seguido por push
), arguments
a entrada é ignorada quando é usada.
Requisitos
Requisito | Descrição |
---|---|
Tipos de pipeline | YAML, build clássico, versão clássica |
É executado em | Agent, DeploymentGroup |
Demandas | Nenhum |
Funcionalidades | Essa tarefa não atende a nenhuma demanda por tarefas subsequentes no trabalho. |
Restrições de comando | Qualquer |
Variáveis configuráveis | Qualquer |
Versão do agente | 2.172.0 ou superior |
Categoria da tarefa | Build |
Requisito | Descrição |
---|---|
Tipos de pipeline | YAML, build clássico, versão clássica |
É executado em | Agent, DeploymentGroup |
Demandas | Nenhum |
Funcionalidades | Essa tarefa não atende a nenhuma demanda por tarefas subsequentes no trabalho. |
Restrições de comando | Qualquer |
Variáveis configuráveis | Qualquer |
Versão do agente | Todas as versões do agente com suporte. |
Categoria da tarefa | Build |