Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Syntaxis
# 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.
Invoer
containerRegistry
-
containerregister
string
.
Naam van de Docker-registerserviceverbinding. Vereist voor opdrachten die verificatie uitvoeren met een register.
repository
-
containeropslagplaats
string
. Facultatief. Gebruiken wanneer command != login && command != logout && command != start && command != stop
.
Hiermee geeft u de naam van de opslagplaats.
repository
-
containeropslagplaats
string
. Facultatief. Gebruiken wanneer command != login && command != logout
.
Hiermee geeft u de naam van de opslagplaats.
command
-
opdracht
string
. Verplicht. Toegestane waarden: buildAndPush
, build
, push
, login
, logout
, start
, stop
. Standaardwaarde: buildAndPush
.
Hiermee geeft u de Docker-opdracht die moet worden uitgevoerd.
command
-
opdracht
string
. Verplicht. Toegestane waarden: buildAndPush
, build
, push
, login
, logout
. Standaardwaarde: buildAndPush
.
Hiermee geeft u de Docker-opdracht die 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 maakt gebruik van het eerste Docker-bestand dat wordt gevonden om de installatiekopieën te bouwen.
buildContext
-
context maken
string
. Facultatief. Gebruiken wanneer command = build || command = buildAndPush
. Standaardwaarde: **
.
Hiermee geeft u het pad naar de buildcontext. Geef **
door om de map aan te geven die het Docker-bestand bevat.
tags
-
tags
string
. Facultatief. Gebruiken wanneer command = build || command = push || command = buildAndPush
. Standaardwaarde: $(Build.BuildId)
.
Hiermee geeft u een lijst met door komma's gescheiden tags. Deze tags worden gebruikt in build
, push
en buildAndPush
opdrachten.
arguments
-
argumenten
string
. Facultatief. Gebruiken wanneer command != login && command != logout && command != buildAndPush
.
Hiermee geeft u aanvullende argumenten op die moeten worden doorgegeven aan de Docker-client. Als u de waarde gebruikt buildAndPush
voor de opdrachtparameter, 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
boolean
. Standaardwaarde: true
.
Pijplijngegevens zoals de naam van de bronbranch of build-id worden standaard toegevoegd en helpen bij tracering. U kunt bijvoorbeeld een installatiekopie inspecteren om erachter te komen welke pijplijn de installatiekopie heeft gemaakt. U kunt zich afmelden voor dit standaardgedrag.
addBaseImageData
-
Metagegevens van basisinstallatiekopieën toevoegen aan
boolean
. Standaardwaarde: true
.
Standaard worden basisinstallatiekopieën, zoals de naam of samenvatting van de basisinstallatiekopieën, toegevoegd en hulp bij tracering. U kunt zich afmelden voor dit standaardgedrag.
container
-
Container
string
. Facultatief. Gebruiken wanneer command = start || command = stop
.
Hiermee geeft u de naam op van de containerresource die moet worden gestart of gestopt. Gebruik deze opdracht met start
en stop
opdrachten.
Opties voor taakbeheer
Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor 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 opdrachtuitvoer bevatten. U kunt twee bestandspaden weergeven op afzonderlijke regels voor de opdracht buildAndPush
en één bestandspad voor elke andere opdracht.
Opmerkingen
Hieronder volgen de belangrijkste voordelen van het gebruik van de Docker-taak in plaats van rechtstreeks het binaire bestand van de Docker-client in een script te gebruiken.
Integratie met docker-registerserviceverbinding : met de taak kunt u eenvoudig een Docker-registerserviceverbinding gebruiken om verbinding te maken met een containerregister. Zodra u zich hebt aangemeld, kunt u opvolgende taken toevoegen die andere taken of scripts uitvoeren door gebruik te maken van de aanmelding die door de Docker-taak wordt gebruikt. 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 naar het register te bouwen en te pushen.
metagegevens die zijn toegevoegd als labels - Met de taak worden traceerbaarheidsgerelateerde metagegevens aan de afbeelding toegevoegd in de volgende labels -
- com.azure.dev.image.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.releaseid
- com.azure.dev.image.release.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 opdracht buildAndPush
negeert de argumenten die zijn doorgegeven omdat ze niet eenduidig worden voor de interne build- en pushopdrachten. U kunt uw opdracht opsplitsen 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 anderen uit 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
Inloggen
In het volgende YAML-fragment ziet u een containerregisteraanmelding met behulp van een Docker-registerserviceverbinding.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Bouwen en pushen
Een handige opdracht met de naam buildAndPush
maakt het bouwen en pushen van installatiekopieën in één opdracht mogelijk 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
gemaakt en naar de containerregisters gepusht die overeenkomen met dockerRegistryServiceConnection1
en dockerRegistryServiceConnection2
.
Als u een specifiek geverifieerd containerregister wilt bouwen en pushen in plaats van dat u in één keer naar alle geverifieerde containerregisters pusht, 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 kunt afmelden 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 opdracht- en argumentinvoer worden gebruikt om aanvullende argumenten door te geven voor build- of pushopdrachten met behulp van docker-client binair bestand, 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
invoer wordt genegeerd wanneer deze wordt gebruikt.
Vereisten
Voorwaarde | Beschrijving |
---|---|
Pijplijntypen | YAML, klassieke build, klassieke release |
Wordt uitgevoerd op | Agent, DeploymentGroup |
eisen | Geen |
mogelijkheden | Deze taak voldoet niet aan de vereisten voor volgende taken in de taak. |
opdrachtbeperkingen | Welk dan ook |
variabelen instellen | Welk dan ook |
Agentversie | 2.172.0 of hoger |
Taakcategorie | Bouwen |
Voorwaarde | Beschrijving |
---|---|
Pijplijntypen | YAML, klassieke build, klassieke release |
Wordt uitgevoerd op | Agent, DeploymentGroup |
eisen | Geen |
mogelijkheden | Deze taak voldoet niet aan de vereisten voor volgende taken in de taak. |
opdrachtbeperkingen | Welk dan ook |
variabelen instellen | Welk dan ook |
Agentversie | Alle ondersteunde agentversies. |
Taakcategorie | Bouwen |