Compartilhar via


Docker@2 – Tarefa do 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.

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.

Entradas

containerRegistry - registro de contêiner
string.

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


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

Especifica o nome do repositório.


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

Especifica o comando do Docker a ser executado.


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


marcas de 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 em comandos build, push e buildAndPush.


argumentos arguments -
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 do 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, dados de imagem base, como nome de imagem base ou resumo, são adicionados e ajudam na rastreabilidade. Você pode recusar esse comportamento padrão.


de contêiner container -
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 comandos start e stop.


Opções de controle de tarefa

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

Variáveis de saída

Essa tarefa define as seguintes variáveis de saída , 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 comando buildAndPush e um caminho de arquivo para qualquer outro comando.

Observações

Veja a seguir os principais benefícios de usar a tarefa do Docker em vez de usar diretamente o binário do cliente do Docker em um script.

  • integração com a conexão do serviço de 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 conectado, 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 uma imagem por push 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

Resoluçã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 para os comandos internos de build e push. 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 dá suporte apenas à 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 as outras pessoas 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

Entrar

O snippet yaml a seguir mostra um logon do 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

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 compilar e enviar por push para todos os registros de contêiner autenticados de uma só vez, especifique explicitamente a entrada containerRegistry 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 de 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 exclusivas.

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 do 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 entrada é ignorada quando é usada.

Requisitos

Requisito Descrição
Tipos de pipeline YAML, build clássico, versão clássica
Execuções em Agente, DeploymentGroup
de demandas Nenhum
recursos Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho.
restrições de comando Qualquer
variáveis settable Qualquer
Versão do agente 2.172.0 ou superior
Categoria de tarefa Construir