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 buildcomandos e pushbuildAndPush .


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