Dela via


Docker@2 – Docker v2-uppgift

Skapa eller push-överföra Docker-avbildningar, logga in eller logga ut, starta eller stoppa containrar eller kör ett Docker-kommando.

Skapa eller push-överföra Docker-avbildningar, logga in eller logga ut eller kör ett Docker-kommando.

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.

Indata

containerRegistry - Containerregister
string.

Namnet på Docker-registertjänstanslutningen. Krävs för kommandon som utför autentisering med ett register.


repository - Containerlagringsplats
string. Valfritt. Använd när command != login && command != logout && command != start && command != stop.

Anger namnet på lagringsplatsen.


repository - Containerlagringsplats
string. Valfritt. Använd när command != login && command != logout.

Anger namnet på lagringsplatsen.


command - Kommandot
string. Krävs. Tillåtna värden: buildAndPush, build, push, login, logout, start. stop Standardvärde: buildAndPush.

Anger det Docker-kommando som ska köras.


command - Kommandot
string. Krävs. Tillåtna värden: buildAndPush, build, push, login, logout. Standardvärde: buildAndPush.

Anger det Docker-kommando som ska köras.


Dockerfile - Dockerfile
string. Krävs när command = build || command = buildAndPush. Standardvärde: **/Dockerfile.

Anger sökvägen till Docker-filen. Uppgiften använder den första Docker-filen som hittas för att skapa avbildningen.


buildContext - Skapa kontext
string. Valfritt. Använd när command = build || command = buildAndPush. Standardvärde: **.

Anger sökvägen till byggkontexten. Skicka ** för att ange katalogen som innehåller Docker-filen.


tags - Taggar
string. Valfritt. Använd när command = build || command = push || command = buildAndPush. Standardvärde: $(Build.BuildId).

Anger en lista över kommaavgränsade taggar. De här taggarna används i buildkommandona och pushbuildAndPush .


arguments - Argument
string. Valfritt. Använd när command != login && command != logout && command != buildAndPush.

Anger ytterligare argument som ska skickas till Docker-klienten. Om du använder värdet buildAndPush för kommandoparametern ignoreras argumentegenskapen.

Exempel: Använda kommandot build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - Lägga till pipelinemetadata i avbildningar
boolean. Standardvärde: true.

Som standard läggs pipelinedata som källgrenens namn eller bygg-ID till och hjälper till med spårning. Du kan till exempel granska en avbildning för att ta reda på vilken pipeline som skapade avbildningen. Du kan välja bort det här standardbeteendet.


addBaseImageData - Lägga till basbildmetadata i bilder
boolean. Standardvärde: true.

Som standard läggs basavbildningsdata som basavbildningsnamn eller sammandrag till och hjälper till med spårning. Du kan välja bort det här standardbeteendet.


container - Behållare
string. Valfritt. Använd när command = start || command = stop.

Anger namnet på containerresursen som ska startas eller stoppas. Använd det här kommandot med start kommandona och stop .


Kontrollalternativ för aktivitet

Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

Den här uppgiften definierar följande utdatavariabler, som du kan använda i underordnade steg, jobb och steg.

DockerOutput
Anger sökvägen till de filer som innehåller kommandoutdata. Du kan visa två filsökvägar på separata rader för buildAndPush kommandot och en filsökväg för andra kommandon.

Kommentarer

Följande är de viktigaste fördelarna med att använda Docker-uppgiften i stället för att direkt använda Docker-klientbinärfilen i ett skript.

  • Integrering med Docker-registertjänstanslutning – Uppgiften gör det enkelt att använda en Docker-registertjänstanslutning för att ansluta till alla containerregister. När du har loggat in kan du lägga till uppföljningsuppgifter som kör andra uppgifter eller skript genom att använda inloggningen som används av Docker-aktiviteten. Använd till exempel Docker-aktiviteten för att logga in på alla Azure Container Registry och sedan använda en annan uppgift eller ett annat skript för att skapa och push-överföra en avbildning till registret.

  • Metadata har lagts till som etiketter – Uppgiften lägger till spårningsrelaterade metadata i bilden i följande etiketter –

    • com.azure.dev.image.build.buildnumber
    • com.azure.dev.image.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.releaseweburl
    • com.azure.dev.image.system.teamfoundationcollectionuri
    • com.azure.dev.image.system.teamproject

Felsökning

Varför ignorerar Docker-aktiviteten argument som skickas till kommandot buildAndPush?

En Docker-aktivitet som konfigurerats med kommandot buildAndPush ignorerar de argument som skickas eftersom de blir tvetydiga för de interna bygg- och push-kommandona. Du kan dela upp kommandot i separata bygg- och push-steg och skicka lämpliga argument. Se till exempel det här stackoverflow-inlägget.

DockerV2 stöder endast Docker-registertjänstanslutning och stöder inte ARM-tjänstanslutning. Hur kan jag använda ett befintligt Azure-tjänsthuvudnamn (SPN) för autentisering i Docker-uppgift?

Du kan skapa en Docker-registertjänstanslutning med dina Azure SPN-autentiseringsuppgifter. Välj de andra från Registertyp och ange informationen på följande sätt:

Docker Registry:    Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID:          Service principal client ID
Password:           Service principal key

Exempel

Inloggning

Följande YAML-kodfragment visar en inloggning i containerregistret med hjälp av en Docker-registertjänstanslutning.

- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1

Skapa och push-överföra

Ett bekvämlighetskommando med namnet buildAndPush tillåter att avbildningar skapas och push-överförs till ett containerregister i ett enda kommando.

Följande YAML-kodfragment är ett exempel på hur du skapar och push-överför flera taggar för en avbildning till flera register.

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

I kodfragmentet ovan skapas och contosoRepository:tag2 push-överförs avbildningarna contosoRepository:tag1 till de containerregister som motsvarar dockerRegistryServiceConnection1 och dockerRegistryServiceConnection2.

Om du vill skapa och push-överföra till ett specifikt autentiserat containerregister i stället för att skapa och push-överföra till alla autentiserade containerregister samtidigt, anger du uttryckligen containerRegistry indata med command: buildAndPush enligt följande:

steps:
- task: Docker@2
  displayName: Build and Push
  inputs:
    command: buildAndPush
    containerRegistry: dockerRegistryServiceConnection1
    repository: contosoRepository
    tags: |
      tag1
      tag2

Utloggning

Följande YAML-kodfragment visar hur du loggar ut från ett containerregister med hjälp av en Docker-registertjänstanslutning.

- task: Docker@2
  displayName: Logout of ACR
  inputs:
    command: logout
    containerRegistry: dockerRegistryServiceConnection1

Starta/stoppa

Använd den här uppgiften för att styra jobb- och tjänstcontainrar. Den här användningen är ovanlig, men används ibland under unika omständigheter.

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

Andra kommandon och argument

Kommando- och argumentindata används för att skicka ytterligare argument för build- eller push-kommandon med hjälp av Docker-klientbinärt som det visas i exemplet.

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

Anteckning

Argumentens indata utvärderas för alla kommandon utom buildAndPush. buildAndPush är ett bekvämlighetskommando (build följt av push), arguments indata ignoreras när det används.

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion 2.172.0 eller senare
Uppgiftskategori Build
Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion Alla agentversioner som stöds.
Uppgiftskategori Build