Docker@2 - Tarefa do Docker v2
Crie ou envie imagens do Docker, inicie sessão ou termine sessão, inicie ou pare contentores ou execute um comando do Docker.
Crie ou envie imagens do Docker, inicie sessão ou termine sessão 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
-
Registo de contentor
string
.
Nome da ligação do serviço de registo do Docker. Necessário para comandos que efetuam a autenticação com um registo.
repository
-
Repositório de contentor
string
. Opcional. Utilize quando command != login && command != logout && command != start && command != stop
.
Especifica o nome do repositório.
repository
-
Repositório de contentor
string
. Opcional. Utilize quando command != login && command != logout
.
Especifica o nome do repositório.
command
-
Comando
string
. Obrigatório. Valores permitidos: buildAndPush
, , push
build
, login
, logout
, start
, . stop
Valor predefinido: buildAndPush
.
Especifica o comando do Docker a executar.
command
-
Comando
string
. Obrigatório. Valores permitidos: buildAndPush
, , build
push
, login
, logout
. Valor predefinido: buildAndPush
.
Especifica o comando do Docker a executar.
Dockerfile
-
Dockerfile
string
. Necessário quando command = build || command = buildAndPush
. Valor predefinido: **/Dockerfile
.
Especifica o caminho para o ficheiro do Docker. A tarefa utiliza o primeiro ficheiro do Docker que encontra para criar a imagem.
buildContext
-
Contexto de compilação
string
. Opcional. Utilize quando command = build || command = buildAndPush
. Valor predefinido: **
.
Especifica o caminho para o contexto de compilação. Passe **
para indicar o diretório que contém o ficheiro do Docker.
tags
-
Etiquetas
string
. Opcional. Utilize quando command = build || command = push || command = buildAndPush
. Valor predefinido: $(Build.BuildId)
.
Especifica uma lista de etiquetas separadas por vírgulas. Estas etiquetas são utilizadas em build
comandos e push
buildAndPush
.
arguments
-
Argumentos
string
. Opcional. Utilize quando command != login && command != logout && command != buildAndPush
.
Especifica argumentos adicionais a transmitir para o cliente do Docker. Se utilizar o valor buildAndPush
para o parâmetro de comando, a propriedade arguments é ignorada.
Exemplo: com o comando build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Adicionar metadados de pipeline a imagens
boolean
. Valor predefinido: true
.
Por predefinição, os dados do pipeline, como o nome do ramo de origem ou o ID de compilação, são adicionados e ajudam na rastreabilidade. Por exemplo, pode inspecionar uma imagem para saber que pipeline criou a imagem. Pode optar ativamente por não participar neste comportamento predefinido.
addBaseImageData
-
Adicionar metadados de imagem de base a imagens
boolean
. Valor predefinido: true
.
Por predefinição, os dados de imagem de base, como o nome da imagem de base ou o resumo, são adicionados e ajudam na rastreabilidade. Pode optar ativamente por não participar neste comportamento predefinido.
container
-
Contentor
string
. Opcional. Utilize quando command = start || command = stop
.
Especifica o nome do recurso de contentor a iniciar ou parar. Utilize este comando com start
comandos e stop
.
Opções de controlo de tarefas
Todas as tarefas têm opções de controlo para além das entradas de tarefas. Para obter mais informações, veja Opções de controlo e propriedades de tarefas comuns.
Variáveis de saída
Esta tarefa define as seguintes variáveis de saída, que pode consumir em passos, tarefas e fases a jusante.
DockerOutput
Especifica o caminho para os ficheiros que contêm a saída do comando. Pode listar dois caminhos de ficheiro em linhas separadas para o buildAndPush
comando e um caminho de ficheiro para qualquer outro comando.
Observações
Seguem-se as principais vantagens de utilizar a tarefa do Docker em vez de utilizar diretamente o binário do cliente do Docker num script.
Integração com a ligação do serviço de registo do Docker – a tarefa facilita a utilização de uma ligação do serviço de registo do Docker para ligar a qualquer registo de contentor. Depois de iniciar sessão, pode adicionar tarefas de seguimento que executam outras tarefas ou scripts ao tirar partido do início de sessão utilizado pela tarefa do Docker. Por exemplo, utilize a tarefa do Docker para iniciar sessão em qualquer Azure Container Registry e, em seguida, utilize outra tarefa ou script para criar e enviar uma imagem para o registo.
Metadados adicionados como etiquetas – a tarefa adiciona metadados relacionados com a rastreabilidade à imagem nas seguintes etiquetas –
- 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 motivo a tarefa do Docker ignora os argumentos transmitidos ao comando buildAndPush?
Uma tarefa do Docker configurada com o comando buildAndPush
ignora os argumentos transmitidos porque se tornam ambíguos para os comandos internos de criação e envio. 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 só suporta a ligação do serviço de registo do Docker e não suporta a ligação do serviço ARM. Como posso utilizar um principal de serviço (SPN) do Azure existente 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 as outras no Tipo de registo e indique os detalhes da seguinte forma:
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 fragmento YAML seguinte mostra um início de sessão do registo de contentor com uma ligação do serviço de registo do Docker.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Criar e Emitir
Um comando de conveniência chamado buildAndPush
permite criar e emitir imagens para um registo de contentor num único comando.
O fragmento YAML seguinte é um exemplo de criação e empção de várias etiquetas de uma imagem para vários registos.
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 fragmento acima, as imagens contosoRepository:tag1
e contosoRepository:tag2
são criadas e enviadas para os registos de contentor correspondentes a dockerRegistryServiceConnection1
e dockerRegistryServiceConnection2
.
Se quiser criar e emitir para um registo de contentor autenticado específico em vez de criar e emitir para todos os registos de contentor autenticados ao mesmo tempo, 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
Terminar sessão
O fragmento YAML seguinte mostra como terminar sessão a partir de um registo de contentor com uma ligação do serviço de registo do Docker.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Iniciar/parar
Utilize esta tarefa para controlar os contentores de tarefas e serviços. Esta utilização é invulgar, mas ocasionalmente utilizada 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 comandos e argumentos são utilizadas para transmitir argumentos adicionais para comandos de compilação ou push com 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
Nota
A entrada de argumentos é avaliada para todos os comandos, exceto buildAndPush
.
buildAndPush
é um comando conveniente (build
seguido de push
), arguments
a entrada é ignorada quando é utilizada.
Requisitos
Requisito | Description |
---|---|
Tipos de pipeline | YAML, Compilação clássica, Versão clássica |
É executado em | Agent, DeploymentGroup |
Exigências | Nenhuma |
Capacidades | Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes na tarefa. |
Restrições de comandos | Qualquer |
Variáveis de definição | Qualquer |
Versão do agente | 2.172.0 ou superior |
Categoria da tarefa | Compilação |
Requisito | Description |
---|---|
Tipos de pipeline | YAML, Compilação clássica, Versão clássica |
É executado em | Agent, DeploymentGroup |
Exigências | Nenhuma |
Capacidades | Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes na tarefa. |
Restrições de comandos | Qualquer |
Variáveis de definição | Qualquer |
Versão do agente | Todas as versões de agente suportadas. |
Categoria da tarefa | Compilação |