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 builden-opdrachten pushbuildAndPush .


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