Docker@2 – Docker v2-uppgift
Skapa eller push-överföra Docker-avbildningar, logga in eller logga ut, starta eller stoppa containrar eller kör ett Docker-kommando.
Skapa eller push-överföra Docker-avbildningar, logga in eller logga ut eller kör ett Docker-kommando.
Syntax
# 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.
Ingångar
containerRegistry
-
Container Registry
string
.
Namnet på Docker-registertjänstanslutningen. Krävs för kommandon som utför autentisering med ett register.
repository
-
containerlagringsplats
string
. Valfritt. Använd när command != login && command != logout && command != start && command != stop
.
Anger namnet på lagringsplatsen.
repository
-
containerlagringsplats
string
. Valfritt. Använd när command != login && command != logout
.
Anger namnet på lagringsplatsen.
command
-
kommando
string
. Obligatoriskt. Tillåtna värden: buildAndPush
, build
, push
, login
, logout
, start
, stop
. Standardvärde: buildAndPush
.
Anger det Docker-kommando som ska köras.
command
-
kommando
string
. Obligatoriskt. Tillåtna värden: buildAndPush
, build
, push
, login
, logout
. Standardvärde: buildAndPush
.
Anger det Docker-kommando som ska köras.
Dockerfile
-
Dockerfile
string
. Krävs när command = build || command = buildAndPush
. Standardvärde: **/Dockerfile
.
Anger sökvägen till Docker-filen. Uppgiften använder den första Docker-filen som den hittar för att skapa avbildningen.
buildContext
-
Skapa kontext
string
. Valfritt. Använd när command = build || command = buildAndPush
. Standardvärde: **
.
Anger sökvägen till byggkontexten. Skicka **
för att ange katalogen som innehåller Docker-filen.
tags
-
Taggar
string
. Valfritt. Använd när command = build || command = push || command = buildAndPush
. Standardvärde: $(Build.BuildId)
.
Anger en lista med kommaavgränsade taggar. Dessa taggar används i kommandona build
, push
och buildAndPush
.
arguments
-
argument
string
. Valfritt. Använd när command != login && command != logout && command != buildAndPush
.
Anger ytterligare argument som ska skickas till Docker-klienten. Om du använder värdet buildAndPush
för kommandoparametern ignoreras egenskapen argument.
Exempel: Använd build-kommandot --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Lägg till pipelinemetadata i avbildningar
boolean
. Standardvärde: true
.
Som standard läggs pipelinedata som källgrenens namn eller bygg-ID till och hjälper till med spårning. Du kan till exempel inspektera en avbildning för att ta reda på vilken pipeline som skapade avbildningen. Du kan avregistrera dig från det här standardbeteendet.
addBaseImageData
-
Lägg till basbildmetadata i bilder
boolean
. Standardvärde: true
.
Som standard läggs basavbildningsdata som basavbildningsnamn eller sammandrag till och hjälper till med spårning. Du kan avregistrera dig från det här standardbeteendet.
container
-
Container
string
. Valfritt. Använd när command = start || command = stop
.
Anger namnet på containerresursen som ska startas eller stoppas. Använd det här kommandot med kommandona start
och stop
.
Kontrollalternativ för aktivitet
Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.
Utdatavariabler
Den här uppgiften definierar följande utdatavariabler, som du kan använda i underordnade steg, jobb och steg.
DockerOutput
Anger sökvägen till de filer som innehåller kommandoutdata. Du kan visa två filsökvägar på separata rader för kommandot buildAndPush
och en filsökväg för alla andra kommandon.
Anmärkningar
Följande är de viktigaste fördelarna med att använda Docker-uppgiften i stället för att direkt använda Docker-klientbinärt i ett skript.
Integrering med Docker-registertjänstanslutning – Uppgiften gör det enkelt att använda en Docker-registertjänstanslutning för att ansluta till alla containerregister. När du har loggat in kan du lägga till uppföljningsuppgifter som kör andra uppgifter eller skript genom att använda inloggningen som används av Docker-aktiviteten. Du kan till exempel använda Docker-uppgiften för att logga in på ett Azure Container Registry och sedan använda en annan uppgift eller ett annat skript för att skapa och skicka en avbildning till registret.
metadata som lagts till som etiketter – Uppgiften lägger till spårningsrelaterade metadata till bilden i följande etiketter -
- 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
Felsökning
Varför ignorerar Docker-aktiviteten argument som skickas till kommandot buildAndPush?
En Docker-uppgift som konfigurerats med kommandot buildAndPush
ignorerar de argument som skickas eftersom de blir tvetydiga för de interna kommandona för att skapa och push-överföra. Du kan dela upp kommandot i separata bygg- och push-steg och skicka lämpliga argument. Se till exempel det här stackoverflow-inlägget.
DockerV2 stöder endast Docker-registertjänstanslutning och stöder inte ARM-tjänstanslutning. Hur kan jag använda ett befintligt Azure-tjänstens huvudnamn (SPN) för autentisering i Docker-uppgiften?
Du kan skapa en Docker-registertjänstanslutning med dina Azure SPN-autentiseringsuppgifter. Välj de andra från Registertyp och ange informationen på följande sätt:
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Exempel
Logga in
Följande YAML-kodfragment visar en inloggning i containerregistret med hjälp av en Docker-registertjänstanslutning.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Skapa och push-överföra
Med ett bekvämlighetskommando med namnet buildAndPush
kan du skapa och skicka avbildningar till ett containerregister i ett enda kommando.
Följande YAML-kodfragment är ett exempel på hur du skapar och push-överför flera taggar av en avbildning till flera register.
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
I ovanstående kodfragment skapas och skickas avbildningarna contosoRepository:tag1
och contosoRepository:tag2
till de containerregister som motsvarar dockerRegistryServiceConnection1
och dockerRegistryServiceConnection2
.
Om du vill skapa och push-överföra till ett specifikt autentiserat containerregister i stället för att skapa och push-överföra till alla autentiserade containerregister samtidigt anger du uttryckligen containerRegistry
indata med command: buildAndPush
enligt följande:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Utloggning
Följande YAML-kodfragment visar hur du loggar ut från ett containerregister med hjälp av en Docker-registertjänstanslutning.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Starta/stoppa
Använd den här uppgiften för att styra jobb- och tjänstcontainrar. Den här användningen är ovanlig, men används ibland under unika omständigheter.
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
Andra kommandon och argument
Kommando- och argumentindata används för att skicka ytterligare argument för build- eller push-kommandon med hjälp av Docker-klientbinärt enligt exemplet.
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
Anmärkning
Argumentens indata utvärderas för alla kommandon utom buildAndPush
.
buildAndPush
är ett bekvämlighetskommando (build
följt av push
) ignoreras arguments
indata när det används.
Krav
Krav | Beskrivning |
---|---|
Pipelinetyper | YAML, klassisk version, klassisk version |
Körs på | Agent, DeploymentGroup |
kräver | Ingen |
funktioner | Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Vilken som helst |
variabler som kan | Vilken som helst |
Agentversion | 2.172.0 eller senare |
Aktivitetskategori | Skapa |
Krav | Beskrivning |
---|---|
Pipelinetyper | YAML, klassisk version, klassisk version |
Körs på | Agent, DeploymentGroup |
kräver | Ingen |
funktioner | Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Vilken som helst |
variabler som kan | Vilken som helst |
Agentversion | Alla agentversioner som stöds. |
Aktivitetskategori | Skapa |