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.
# 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.
Indata
containerRegistry
-
Containerregister
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
-
Kommandot
string
. Krävs. Tillåtna värden: buildAndPush
, build
, push
, login
, logout
, start
. stop
Standardvärde: buildAndPush
.
Anger det Docker-kommando som ska köras.
command
-
Kommandot
string
. Krävs. 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 hittas 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 över kommaavgränsade taggar. De här taggarna används i build
kommandona och push
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 argumentegenskapen.
Exempel: Använda kommandot build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Lägga 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 granska en avbildning för att ta reda på vilken pipeline som skapade avbildningen. Du kan välja bort det här standardbeteendet.
addBaseImageData
-
Lägga 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 välja bort det här standardbeteendet.
container
-
Behållare
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 start
kommandona 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 buildAndPush
kommandot och en filsökväg för andra kommandon.
Kommentarer
Följande är de viktigaste fördelarna med att använda Docker-uppgiften i stället för att direkt använda Docker-klientbinärfilen 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. Använd till exempel Docker-aktiviteten för att logga in på alla Azure Container Registry och sedan använda en annan uppgift eller ett annat skript för att skapa och push-överföra en avbildning till registret.
Metadata har lagts till som etiketter – Uppgiften lägger till spårningsrelaterade metadata i 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-aktivitet som konfigurerats med kommandot buildAndPush
ignorerar de argument som skickas eftersom de blir tvetydiga för de interna bygg- och push-kommandona. 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änsthuvudnamn (SPN) för autentisering i Docker-uppgift?
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
Inloggning
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
Ett bekvämlighetskommando med namnet buildAndPush
tillåter att avbildningar skapas och push-överförs till ett containerregister i ett enda kommando.
Följande YAML-kodfragment är ett exempel på hur du skapar och push-överför flera taggar för 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 kodfragmentet ovan skapas och contosoRepository:tag2
push-överförs avbildningarna contosoRepository:tag1
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 som det visas i 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
Anteckning
Argumentens indata utvärderas för alla kommandon utom buildAndPush
.
buildAndPush
är ett bekvämlighetskommando (build
följt av push
), arguments
indata ignoreras när det används.
Krav
Krav | Beskrivning |
---|---|
Pipelinetyper | YAML, klassisk version, klassisk version |
Körs på | Agent, DeploymentGroup |
Krav | Ingen |
Funktioner | Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Valfri |
Inställningsbara variabler | Valfri |
Agentversion | 2.172.0 eller senare |
Uppgiftskategori | Build |
Krav | Beskrivning |
---|---|
Pipelinetyper | YAML, klassisk version, klassisk version |
Körs på | Agent, DeploymentGroup |
Krav | Ingen |
Funktioner | Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet. |
Kommandobegränsningar | Valfri |
Inställningsbara variabler | Valfri |
Agentversion | Alla agentversioner som stöds. |
Uppgiftskategori | Build |