Delen via


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 maakt gebruik van het eerste Docker-bestand dat wordt gevonden om de installatiekopieën te bouwen.


buildContext - Context bouwen
string. Optioneel. Gebruik wanneer command = build || command = buildAndPush. Standaardwaarde: **.

Hiermee geeft u het pad naar de buildcontext op. 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 door komma's gescheiden tags op. Deze tags worden gebruikt in buildopdrachten , push en buildAndPush .


arguments - Argumenten
string. Optioneel. Gebruik wanneer command != login && command != logout && command != buildAndPush.

Hiermee geeft u aanvullende argumenten door aan de Docker-client. 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ën inspecteren om erachter te komen met welke pijplijn de installatiekopieën zijn gemaakt. 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 op van de containerresource die moet worden gestart of gestopt. Gebruik deze opdracht met start opdrachten en stop .


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties voor besturingselementen 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 het binaire bestand van de Docker-client in een script.

  • Integratie met Docker-registerserviceverbinding : met deze taak kunt u eenvoudig een Docker-registerserviceverbinding gebruiken om verbinding te maken met een containerregister. Nadat u zich hebt aangemeld, kunt u vervolgtaken 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 : de taak voegt traceerbaarheidsgerelateerde metagegevens toe 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 opsplitsen in afzonderlijke build- en pushstappen en de geschikte argumenten doorgeven. Zie bijvoorbeeld dit stackoverflow-bericht.

DockerV2 ondersteunt alleen verbinding met docker-registerservice 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 op als volgt:

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

Een handige opdracht met de naam buildAndPush maakt het bouwen en pushen van installatiekopieën naar een containerregister in één opdracht mogelijk.

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