Docker@2 - Docker v2-taak
Docker-installatiekopieën bouwen of pushen, aanmelden of afmelden, containers starten of stoppen of een Docker-opdracht uitvoeren.
Docker-installatiekopieën bouwen of pushen, aanmelden of afmelden, of een Docker-opdracht uitvoeren.
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.
Invoerwaarden
containerRegistry
- Containerregister
string
.
Naam van de verbinding met de Docker-registerservice. Vereist voor opdrachten die verificatie uitvoeren met een register.
repository
- Containeropslagplaats
string
. Optioneel. Gebruik wanneer command != login && command != logout && command != start && command != stop
.
Hiermee geeft u de naam van de opslagplaats.
repository
- Containeropslagplaats
string
. Optioneel. Gebruik wanneer command != login && command != logout
.
Hiermee geeft u de naam van de opslagplaats.
command
- Opdracht
string
. Vereist. Toegestane waarden: buildAndPush
, build
, push
, login
, logout
, start
, . stop
Standaardwaarde: buildAndPush
.
Hiermee geeft u de Docker-opdracht moet worden uitgevoerd.
command
- Opdracht
string
. Vereist. Toegestane waarden: buildAndPush
, build
, push
, login
, . logout
Standaardwaarde: buildAndPush
.
Hiermee geeft u de Docker-opdracht moet worden uitgevoerd.
Dockerfile
- Dockerfile
string
. Vereist wanneer command = build || command = buildAndPush
. Standaardwaarde: **/Dockerfile
.
Hiermee geeft u het pad naar het Docker-bestand. De taak gebruikt het eerste Docker-bestand dat wordt gevonden om de installatiekopieën te bouwen.
buildContext
- Buildcontext
string
. Optioneel. Gebruik wanneer command = build || command = buildAndPush
. Standaardwaarde: **
.
Hiermee geeft u het pad naar de buildcontext. Pass **
om de map aan te geven die het Docker-bestand bevat.
tags
- Tags
string
. Optioneel. Gebruik wanneer command = build || command = push || command = buildAndPush
. Standaardwaarde: $(Build.BuildId)
.
Hiermee geeft u een lijst met tags op afzonderlijke regels. Deze tags worden gebruikt in build
en-opdrachten push
buildAndPush
.
arguments
- Argumenten
string
. Optioneel. Gebruik wanneer command != login && command != logout && command != buildAndPush
.
Hiermee geeft u aanvullende argumenten aan de Docker-client door. Als u de waarde buildAndPush
voor de opdrachtparameter gebruikt, wordt de eigenschap argumenten genegeerd.
Voorbeeld: met behulp van de build-opdracht, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
- Pijplijnmetagegevens toevoegen aan installatiekopieën
boolean
. Standaardwaarde: true
.
Standaard worden pijplijngegevens, zoals de naam van de bronbranch of de build-id, toegevoegd en helpen bij de traceerbaarheid. U kunt bijvoorbeeld een installatiekopie inspecteren om erachter te komen met welke pijplijn de installatiekopie is gebouwd. U kunt zich afmelden voor dit standaardgedrag.
addBaseImageData
- Metagegevens van basisinstallatiekopieën toevoegen aan installatiekopieën
boolean
. Standaardwaarde: true
.
Standaard worden basisafbeeldingsgegevens, zoals de naam van de basisinstallatiekopieën of samenvatting, toegevoegd en helpen bij de traceerbaarheid. U kunt zich afmelden voor dit standaardgedrag.
container
- Container
string
. Optioneel. Gebruik wanneer command = start || command = stop
.
Hiermee geeft u de naam van de containerresource te starten of te stoppen. Gebruik deze opdracht met start
opdrachten en stop
.
Opties voor taakbeheer
Alle taken hebben naast de taakinvoer besturingsopties. Zie Besturingsopties en algemene taakeigenschappen voor meer informatie.
Uitvoervariabelen
Deze taak definieert de volgende uitvoervariabelen, die u kunt gebruiken in downstreamstappen, taken en fasen.
DockerOutput
Hiermee geeft u het pad naar de bestanden die de uitvoer van de opdracht bevatten. U kunt twee bestandspaden weergeven op afzonderlijke regels voor de buildAndPush
opdracht en één bestandspad voor elke andere opdracht.
Opmerkingen
Hier volgen de belangrijkste voordelen van het gebruik van de Docker-taak in plaats van rechtstreeks gebruik te maken van het binaire bestand van de Docker-client in een script.
Integratie met docker-registerserviceverbinding : met de taak kunt u eenvoudig een Docker-registerserviceverbinding gebruiken om verbinding te maken met een containerregister. Zodra u bent aangemeld, kunt u opvolgende taken toevoegen die andere taken of scripts uitvoeren door gebruik te maken van de aanmelding die wordt gebruikt door de Docker-taak. Gebruik bijvoorbeeld de Docker-taak om u aan te melden bij een Azure Container Registry en gebruik vervolgens een andere taak of script om een installatiekopieën te bouwen en naar het register te pushen.
Metagegevens die als labels zijn toegevoegd : met de taak worden metagegevens met betrekking tot traceerbaarheid toegevoegd aan de afbeelding in de volgende labels :
- com.azure.dev.image.build.build.buildnumber
- com.azure.dev.image.build.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.release.releaseid
- com.azure.dev.image.release.releaseweburl
- com.azure.dev.image.system.teamfoundationcollectionuri
- com.azure.dev.image.system.teamproject
Problemen oplossen
Waarom negeert de Docker-taak argumenten die zijn doorgegeven aan de opdracht buildAndPush?
Een Docker-taak die is geconfigureerd met behulp van de buildAndPush
opdracht, negeert de argumenten die worden doorgegeven, omdat deze dubbelzinnig worden voor de interne build- en pushopdrachten. U kunt uw opdracht splitsen in afzonderlijke build- en pushstappen en de geschikte argumenten doorgeven. Zie bijvoorbeeld dit stackoverflow-bericht.
DockerV2 biedt alleen ondersteuning voor docker-registerserviceverbinding en biedt geen ondersteuning voor ARM-serviceverbinding. Hoe kan ik een bestaande Azure-service-principal (SPN) gebruiken voor verificatie in Docker-taak?
U kunt een Docker-registerserviceverbinding maken met behulp van uw Azure SPN-referenties. Kies de andere in het registertype en geef de details als volgt op:
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Voorbeelden
Aanmelden
Het volgende YAML-fragment toont een containerregister-aanmelding met behulp van een Docker-registerserviceverbinding.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Bouwen en pushen
Met een handige opdracht met de naam buildAndPush
kunt u installatiekopieën in één opdracht bouwen en pushen naar een containerregister.
Het volgende YAML-fragment is een voorbeeld van het bouwen en pushen van meerdere tags van een installatiekopieën naar meerdere registers.
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
In het bovenstaande fragment worden de installatiekopieën contosoRepository:tag1
en contosoRepository:tag2
gebouwd en gepusht naar de containerregisters die overeenkomen met dockerRegistryServiceConnection1
en dockerRegistryServiceConnection2
.
Als u een specifiek geverifieerd containerregister wilt bouwen en pushen in plaats van alle geverifieerde containerregisters tegelijk te bouwen en naar alle geverifieerde containerregisters te pushen, geeft u expliciet de containerRegistry
invoer op met command: buildAndPush
zoals wordt weergegeven:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Afmelden
Het volgende YAML-fragment laat zien hoe u zich afmeldt bij een containerregister met behulp van een Docker-registerserviceverbinding.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Starten/stoppen
Gebruik deze taak om taak- en servicecontainers te beheren. Dit gebruik is ongebruikelijk, maar wordt af en toe gebruikt in unieke omstandigheden.
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
Andere opdrachten en argumenten
De invoer van de opdracht en het argument worden gebruikt om aanvullende argumenten door te geven voor build- of pushopdrachten met behulp van het binaire bestand van de Docker-client, zoals wordt weergegeven in het voorbeeld.
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
Notitie
De invoer van argumenten wordt geëvalueerd voor alle opdrachten, met uitzondering van buildAndPush
. buildAndPush
is een handige opdracht (build
gevolgd door push
), arguments
wordt invoer genegeerd wanneer deze wordt gebruikt.
Vereisten
Vereiste | Beschrijving |
---|---|
Pijplijntypen | YAML, klassieke build, klassieke release |
Wordt uitgevoerd op | Agent, DeploymentGroup |
Eisen | Geen |
Functies | Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak. |
Opdrachtbeperkingen | Alle |
Instelbare variabelen | Alle |
Agentversie | 2.172.0 of hoger |
Taakcategorie | Build |
Vereiste | Beschrijving |
---|---|
Pijplijntypen | YAML, klassieke build, klassieke release |
Wordt uitgevoerd op | Agent, DeploymentGroup |
Eisen | Geen |
Functies | Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak. |
Opdrachtbeperkingen | Alle |
Instelbare variabelen | Alle |
Agentversie | Alle ondersteunde agentversies. |
Taakcategorie | Build |