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 |