Docker@2 – Docker v2-aktivitet

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 den katalog 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 med taggar på separata rader. Dessa taggar används i buildkommandona , push och buildAndPush .


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 build-kommandot, --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 inspektera en avbildning för att ta reda på vilken pipeline som skapade avbildningen. Du kan avregistrera dig från det här standardbeteendet.


addBaseImageData - Lägga till basavbildningsmetadata i avbildningar
boolean. Standardvärde: true.

Som standard läggs basavbildningsdata som basavbildningens namn eller sammandrag till och hjälper till med spårning. Du kan avregistrera dig från 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 .


Alternativ för aktivitetskontroll

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

Utdatavariabler

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

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-uppgiften 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-uppgiften argument som skickas till kommandot buildAndPush?

En Docker-uppgift som konfigurerats med buildAndPush kommandot ignorerar de argument som skickas eftersom de blir tvetydiga för de interna build- 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 Huvudnamn för Azure-tjänsten (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

Med ett bekvämlighetskommando med namnet buildAndPush kan du skapa och skicka avbildningar 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 ovanstående kodfragment skapas avbildningarna contosoRepository:tag1 och contosoRepository:tag2 och push-överförs till 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 du ser 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 ignoreras indata 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 Skapa
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 Skapa