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.

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