Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- YAML
- Classico
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.
- YAML
- Classico
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
- YAML
- Classico
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 |