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: build
buildAndPush
, push
login
logout
start
stop
. Valore predefinito: buildAndPush
.
Specifica il comando Docker da eseguire.
command
-
Comando
string
. Obbligatorio. Valori consentiti: buildAndPush
, build
, login
push
, 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 build
push
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 |