Condividi tramite


Docker@2 - Attività Docker v2

Compilare o eseguire il push di immagini Docker, accedere o disconnettersi, avviare o arrestare i contenitori oppure eseguire un comando Docker.

Compilare o eseguire il push di immagini Docker, accedere o disconnettersi oppure eseguire un comando Docker.

Sintassi

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

Ingressi dati

registro contenitori di containerRegistry -
string.

Nome della connessione al servizio del Registro di sistema Docker . Obbligatorio per i comandi che eseguono l'autenticazione con un registro.


repository - repository container
string. Opzionale. Usare quando command != login && command != logout && command != start && command != stop.

Specifica il nome del repository.


repository - repository container
string. Opzionale. Usare quando command != login && command != logout.

Specifica il nome del repository.


command - comando
string. Obbligatorio. Valori consentiti: buildAndPush, build, push, login, logout, start, stop. Valore predefinito: buildAndPush

Specifica il comando Docker da eseguire.


command - comando
string. Obbligatorio. Valori consentiti: buildAndPush, build, push, login, logout. Valore predefinito: buildAndPush

Specifica il comando Docker da eseguire.


Dockerfile - Dockerfile
string. Obbligatorio quando command = build || command = buildAndPush. Valore predefinito: **/Dockerfile

Specifica il percorso del file Docker. L'attività usa il primo file Docker trovato per compilare l'immagine.


buildContext - contesto di compilazione
string. Opzionale. Usare quando command = build || command = buildAndPush. Valore predefinito: **

Specifica il percorso del contesto di compilazione. Passare ** per indicare la directory contenente il file Docker.


tags - tag
string. Opzionale. Usare quando command = build || command = push || command = buildAndPush. Valore predefinito: $(Build.BuildId)

Specifica un elenco di tag delimitati da virgole. Questi tag vengono usati nei comandi build, push e buildAndPush.


arguments - argomenti
string. Opzionale. Usare quando command != login && command != logout && command != buildAndPush.

Specifica argomenti aggiuntivi da passare al client Docker. Se si usa il valore buildAndPush per il parametro di comando, la proprietà arguments viene ignorata.

Esempio: uso del comando di compilazione --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - Aggiungere metadati della pipeline alle immagini
boolean. Valore predefinito: true

Per impostazione predefinita, i dati della pipeline come il nome del ramo di origine o l'ID di compilazione vengono aggiunti e consentono la tracciabilità. Ad esempio, è possibile esaminare un'immagine per individuare la pipeline che ha compilato l'immagine. È possibile rifiutare esplicitamente questo comportamento predefinito.


addBaseImageData - Aggiungere metadati dell'immagine di base alle immagini
boolean. Valore predefinito: true

Per impostazione predefinita, i dati dell'immagine di base, ad esempio il nome dell'immagine di base o il digest, vengono aggiunti e consentono la tracciabilità. È possibile rifiutare esplicitamente questo comportamento predefinito.


container - container
string. Opzionale. Usare quando command = start || command = stop.

Specifica il nome della risorsa contenitore da avviare o arrestare. Usare questo comando con comandi start e stop.


Opzioni di controllo attività

Tutte le attività hanno opzioni di controllo oltre ai relativi input di attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.

Variabili di output

Questa attività definisce le variabili di output seguenti , che è possibile utilizzare nei passaggi downstream, nei processi e nelle fasi.

DockerOutput
Specifica il percorso dei file che contengono l'output del comando. È possibile elencare due percorsi di file in righe separate per il comando buildAndPush e un percorso di file per qualsiasi altro comando.

Osservazioni:

Di seguito sono riportati i vantaggi principali dell'uso dell'attività Docker anziché dell'uso diretto del file binario del client Docker in uno script.

  • l'integrazione con la connessione al servizio registro Docker: l'attività semplifica l'uso di una connessione al servizio registro Docker per la connessione a qualsiasi registro contenitori. Dopo l'accesso, è possibile aggiungere attività di completamento che eseguono altre attività o script sfruttando l'accesso usato dall'attività Docker. Ad esempio, usare l'attività Docker per accedere a qualsiasi Registro Azure Container e quindi usare un'altra attività o uno script per compilare ed eseguire il push di un'immagine nel Registro di sistema.

  • Metadati aggiunti come etichette : l'attività aggiunge metadati correlati alla tracciabilità all'immagine nelle etichette seguenti:

    • 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

Risoluzione dei problemi

Perché l'attività Docker ignora gli argomenti trasmessi al comando buildAndPush?

Un'attività Docker configurata usando il comando buildAndPush ignora gli argomenti passati perché diventano ambigui per i comandi di compilazione e push interni. È possibile dividere il comando in passaggi di compilazione e push separati e trasmettere gli argomenti appropriati. Ad esempio, vedere questo post di stackoverflow.

DockerV2 supporta solo la connessione al servizio registro Docker e non supporta la connessione al servizio ARM. Come è possibile usare un'entità servizio (SPN) di Azure esistente per l'autenticazione nell'attività Docker?

È possibile creare una connessione al servizio del registro Docker usando le credenziali SPN di Azure. Scegliere gli altri dal tipo di Registro di sistema e specificare i dettagli come indicato di seguito:

Docker Registry:    Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID:          Service principal client ID
Password:           Service principal key

Esempi

Account di accesso

Il frammento YAML seguente mostra un accesso al registro contenitori usando una connessione al servizio registro Docker.

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

Compilazione e push

Un comando pratico denominato buildAndPush consente la compilazione e il push di immagini in un registro contenitori in un singolo comando.

Il frammento YAML seguente è un esempio di compilazione e push di più tag di un'immagine in più registri.

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

Nel frammento di codice precedente le immagini contosoRepository:tag1 e contosoRepository:tag2 vengono compilate ed eseguite il push nei registri contenitori corrispondenti a dockerRegistryServiceConnection1 e dockerRegistryServiceConnection2.

Se si vuole compilare ed eseguire il push in un registro contenitori autenticato specifico anziché compilare ed eseguire il push in tutti i registri contenitori autenticati contemporaneamente, specificare in modo esplicito l'input containerRegistry con command: buildAndPush, come illustrato di seguito:

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

Disconnessione

Il frammento di codice YAML seguente illustra come disconnettersi da un registro contenitori usando una connessione al servizio registro Docker.

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

Avvio/arresto

Usare questa attività per controllare i contenitori di processi e servizi. Questo utilizzo non è comune, ma occasionalmente usato in circostanze uniche.

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

Altri comandi e argomenti

Gli input del comando e degli argomenti vengono usati per passare argomenti aggiuntivi per i comandi di compilazione o push usando il file binario del client Docker, come illustrato nell'esempio.

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

L'input degli argomenti viene valutato per tutti i comandi ad eccezione di buildAndPush. buildAndPush è un comando pratico (build seguito da push), arguments input viene ignorato quando viene usato.

Requisiti

Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
richieste Nessuno
funzionalità di Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione dell'agente 2.172.0 o versione successiva
Categoria attività Costruire
Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
richieste Nessuno
funzionalità di Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione dell'agente Tutte le versioni dell'agente supportate.
Categoria attività Costruire