Partilhar via


Docker@2 - Tarefa Docker v2

Crie ou envie imagens do Docker, efetue login ou logout, inicie ou pare contêineres ou execute um comando do Docker.

Crie ou envie imagens do Docker, faça login ou logout ou execute um comando do Docker.

Sintaxe

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

Insumos

containerRegistry - Registro de contêiner
string.

Nome da conexão do serviço de registro do Docker . Necessário para comandos que executam autenticação com um registro.


repository - Repositório de contêiner
string. Opcional. Use quando command != login && command != logout && command != start && command != stop.

Especifica o nome do repositório.


repository - Repositório de contêiner
string. Opcional. Use quando command != login && command != logout.

Especifica o nome do repositório.


command - de comando
string. Obrigatório. Valores permitidos: buildAndPush, build, push, login, logout, start, stop. Valor padrão: buildAndPush.

Especifica o comando do Docker a ser executado.


command - de comando
string. Obrigatório. Valores permitidos: buildAndPush, build, push, login, logout. Valor padrão: buildAndPush.

Especifica o comando do Docker a ser executado.


Dockerfile - Dockerfile
string. Necessá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 criar a imagem.


buildContext - Construir contexto
string. Opcional. Use quando command = build || command = buildAndPush. Valor padrão: **.

Especifica o caminho para o contexto de compilação. Passe ** para indicar o diretório que contém o arquivo do Docker.


tags - Etiquetas
string. Opcional. Use quando command = build || command = push || command = buildAndPush. Valor padrão: $(Build.BuildId).

Especifica uma lista de tags separadas por vírgula. Essas tags são usadas nos comandos build, push e 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 command, a propriedade arguments será ignorada.

Exemplo: Usando o comando build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - Adicionar metadados de pipeline à(s) imagem(ões)
boolean. Valor padrão: true.

Por padrão, dados de pipeline, como nome de ramificação de origem ou ID de compilação, são adicionados e ajudam na rastreabilidade. Por exemplo, você pode inspecionar uma imagem para descobrir qual pipeline criou a imagem. Você pode desativar esse comportamento padrão.


addBaseImageData - Adicionar metadados de imagem de base à(s) imagem(ões)
boolean. Valor padrão: true.

Por padrão, os dados da imagem base, como nome da imagem base ou resumo, são adicionados e ajudam na rastreabilidade. Você pode desativar esse comportamento padrão.


container - Contentor
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 os comandos start e stop.


Opções de controlo de tarefas

Todas as tarefas têm opções de controle, além de suas entradas de tarefas. Para obter mais informações, consulte Opções de controle de e propriedades de tarefas comuns.

Variáveis de saída

Esta tarefa define as seguintes variáveis de saída , que você pode consumir em etapas, trabalhos e estágios downstream.

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 comando buildAndPush e um caminho de arquivo para qualquer outro comando.

Observações

A seguir estão 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 o de conexão do serviço de registro do Docker - A tarefa facilita o uso de uma conexão de serviço de registro do Docker para conexão com 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 criar e enviar por push uma imagem para o Registro.

  • Metadados adicionados como rótulos - A tarefa adiciona metadados relacionados à rastreabilidade à imagem nos seguintes rótulos -

    • 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 motivo a tarefa do Docker ignora os argumentos transmitidos ao comando buildAndPush?

Uma tarefa do Docker configurada usando o comando buildAndPush ignora os argumentos passados porque eles se tornam ambíguos para os comandos internos de compilação e push. Pode dividir o comando em passos de criação e envio separados e transmitir os argumentos adequados. Por exemplo, veja esta publicação do StackOverflow.

O DockerV2 suporta apenas a conexão do serviço de registro do Docker e não a conexão do serviço ARM. Como posso usar uma entidade de serviço (SPN) existente do Azure para autenticação na tarefa do Docker?

Pode criar uma ligação do serviço de registo do Docker com as credenciais do SPN do Azure. Escolha os outros do tipo de 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

Iniciar sessão

O trecho YAML a seguir mostra um logon de registro de contêiner usando uma conexão de serviço de registro do Docker.

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

Construir e Empurrar

Um comando de conveniência chamado buildAndPush permite a compilação e envio de imagens para um registro de contêiner em um único comando.

O trecho YAML a seguir é um exemplo de criação e envio de várias tags 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 trecho acima, as imagens contosoRepository:tag1 e contosoRepository:tag2 são construídas e enviadas para os registros de contêiner correspondentes a dockerRegistryServiceConnection1 e dockerRegistryServiceConnection2.

Se você quiser criar 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 entrada de containerRegistry com command: buildAndPush conforme mostrado:

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

Sair

O trecho YAML a seguir mostra como fazer logout de um registro de contêiner usando uma conexão de serviço de registro do Docker.

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

Iniciar/parar

Use esta tarefa para controlar contêineres de trabalho e serviço. Este 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 build ou push usando o binário do cliente 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 de push), arguments entrada é ignorada quando é usada.

Requerimentos

Requisito Descrição
Tipos de pipeline YAML, Construção clássica, Versão clássica
Funciona em Agente, DeploymentGroup
Exigências Nenhum
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 2.172.0 ou superior
Categoria de tarefa Construir
Requisito Descrição
Tipos de pipeline YAML, Construção clássica, Versão clássica
Funciona em Agente, DeploymentGroup
Exigências Nenhum
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente Todas as versões de agente suportadas.
Categoria de tarefa Construir