Docker@2 - Attività Docker v2

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

Compilare o eseguire il push di immagini Docker, accedere o disconnettersi o 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.
# 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.

Input

containerRegistry - Registro contenitori
string.

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


repository - Repository contenitore
string. facoltativo. Usare quando command != login && command != logout && command != start && command != stop.

Specifica il nome del repository.


repository - Repository contenitore
string. facoltativo. Usare quando command != login && command != logout.

Specifica il nome del repository.


command - Comando
string. Obbligatorio. Valori consentiti: buildbuildAndPush, pushloginlogoutstartstop. Valore predefinito: buildAndPush.

Specifica il comando Docker da eseguire.


command - Comando
string. Obbligatorio. Valori consentiti: buildAndPush, build, loginpush, 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 che trova per compilare l'immagine.


buildContext - Contesto di compilazione
string. facoltativo. 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. facoltativo. 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 buildpush comandi e buildAndPush .


arguments - Argomenti
string. facoltativo. 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à argomenti 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 scoprire quale pipeline 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 come il nome immagine di base o il digest vengono aggiunti e aiutano con la tracciabilità. È possibile rifiutare esplicitamente questo comportamento predefinito.


container - Contenitore
string. facoltativo. Usare quando command = start || command = stop.

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


Opzioni di controllo delle attività

Tutte le attività dispongono di opzioni di controllo oltre ai relativi input 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 usare nei passaggi, nei processi e nelle fasi downstream.

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

Commenti

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

  • Integrazione con la connessione al servizio del registro Docker : l'attività semplifica l'uso di una connessione al servizio del Registro Di sistema 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 e 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 trasmessi perché diventano ambigui per i comandi interni di compilazione e push. È 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 del Registro di sistema Docker e non supporta la connessione al servizio ARM. Come è possibile usare un'entità servizio di Azure esistente per l'autenticazione nell'attività Docker?

È possibile creare una connessione al servizio del registro Docker usando le credenziali SPN di Azure. Selezionare le altre da Tipo di registro, quindi 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

Esempio

Accedi

Il frammento di codice YAML seguente mostra l'accesso al Registro contenitori usando una connessione al servizio del Registro di sistema 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 a un registro contenitori in un singolo comando.

Il frammento di codice 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 e eseguite il push nei registri contenitori corrispondenti a dockerRegistryServiceConnection1 e dockerRegistryServiceConnection2.

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

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

Logout

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

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

Start/stop

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

I comandi e gli input degli argomenti vengono usati per passare argomenti aggiuntivi per compilare o eseguire il push dei comandi usando il file binario 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 tranne buildAndPush. buildAndPush è un comando pratico (build seguito da push), arguments l'input viene ignorato quando viene usato.

Requisiti

Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Esecuzione in Agente, DeploymentGroup
Richieste Nessuno
Capabilities Questa attività non soddisfa le richieste per le attività successive nel processo.
Restrizioni dei comandi Qualsiasi
Variabili impostabili Qualsiasi
Versione agente 2.172.0 o versione successiva
Categoria attività Compilazione
Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Esecuzione in Agente, DeploymentGroup
Richieste Nessuno
Capabilities Questa attività non soddisfa le richieste per le attività successive nel processo.
Restrizioni dei comandi Qualsiasi
Variabili impostabili Qualsiasi
Versione agente Tutte le versioni dell'agente supportate.
Categoria attività Compilazione