Sdílet prostřednictvím


Docker@2 – úloha Dockeru v2

Sestavte nebo nasdílejte image Dockeru, přihlaste se nebo se odhlaste, spusťte nebo zastavte kontejnery nebo spusťte příkaz Dockeru.

Sestavte nebo nasdílejte image Dockeru, přihlaste se nebo se odhlaste nebo spusťte příkaz Dockeru.

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.

Vstupy

containerRegistry - Registr kontejneru
string.

Název připojení služby registru Dockeru Vyžaduje se pro příkazy, které provádějí ověřování pomocí registru.


repository - Úložiště kontejnerů
string. Nepovinný parametr. Použijte, když command != login && command != logout && command != start && command != stop.

Určuje název úložiště.


repository - Úložiště kontejnerů
string. Nepovinný parametr. Použijte, když command != login && command != logout.

Určuje název úložiště.


command - Příkaz
string. Povinná hodnota. Povolené hodnoty: buildAndPush, build, , loginpush, , logout, start, . stop Výchozí hodnota: buildAndPush.

Určuje příkaz Dockeru, který se má spustit.


command - Příkaz
string. Povinná hodnota. Povolené hodnoty: buildAndPush, build, push, login, . logout Výchozí hodnota: buildAndPush.

Určuje příkaz Dockeru, který se má spustit.


Dockerfile - Soubor Dockerfile
string. Vyžaduje se, když command = build || command = buildAndPush. Výchozí hodnota: **/Dockerfile.

Určuje cestu k souboru Dockeru. Úloha použije první soubor Dockeru, který najde, k sestavení image.


buildContext - Kontext sestavení
string. Nepovinný parametr. Použijte, když command = build || command = buildAndPush. Výchozí hodnota: **.

Určuje cestu ke kontextu sestavení. Předat ** označuje adresář, který obsahuje soubor Dockeru.


tags - Tagy
string. Nepovinný parametr. Použijte, když command = build || command = push || command = buildAndPush. Výchozí hodnota: $(Build.BuildId).

Určuje seznam značek oddělených čárkami. Tyto značky se používají v buildpříkazech , push a buildAndPush .


arguments - Argumenty
string. Nepovinný parametr. Použijte, když command != login && command != logout && command != buildAndPush.

Určuje další argumenty, které se mají předat klientovi Dockeru. Pokud použijete hodnotu buildAndPush parametru příkazu, vlastnost arguments se ignoruje.

Příklad: Použití příkazu sestavení, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - Přidání metadat kanálu k obrázkům
boolean. Výchozí hodnota: true.

Ve výchozím nastavení se přidají data kanálu, jako je název větve zdroje nebo ID sestavení, a pomáhají s sledovatelností. Můžete například zkontrolovat image a zjistit, který kanál image vytvořil. Toto výchozí chování můžete odhlásit.


addBaseImageData - Přidání metadat základního obrázku k obrázkům
boolean. Výchozí hodnota: true.

Ve výchozím nastavení se přidají data základní image, jako je název základní image nebo hodnota hash, a pomáhají tak sledovatelnost. Toto výchozí chování můžete odhlásit.


container - Kontejner
string. Nepovinný parametr. Použijte, když command = start || command = stop.

Určuje název prostředku kontejneru, který se má spustit nebo zastavit. Tento příkaz použijte s start příkazy a stop .


Možnosti ovládání úloh

Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace najdete v tématu Možnosti ovládacích prvků a běžné vlastnosti úlohy.

Výstupní proměnné

Tato úloha definuje následující výstupní proměnné, které můžete využívat v podřízených krocích, úlohách a fázích.

DockerOutput
Určuje cestu k souborům, které obsahují výstup příkazu. Pro příkaz můžete zobrazit dvě cesty k souborům buildAndPush na samostatných řádcích a jednu cestu k souboru pro jakýkoli jiný příkaz.

Poznámky

Níže jsou uvedené klíčové výhody použití úlohy Dockeru místo přímého použití binárního souboru klienta Dockeru ve skriptu.

  • Integrace s připojením ke službě registru Dockeru – Úloha usnadňuje použití připojení služby registru Dockeru pro připojení k libovolnému registru kontejneru. Po přihlášení můžete přidat následné úlohy, které spouštějí jiné úlohy nebo skripty, a to pomocí přihlášení používaného úlohou Dockeru. Pomocí úlohy Dockeru se například přihlaste k libovolnému Azure Container Registry a pak pomocí jiné úlohy nebo skriptu sestavte image a nasdílejte ji do registru.

  • Metadata přidaná jako popisky – Úloha přidá metadata související s sledovatelností do obrázku v následujících popiscích:

    • 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

Poradce při potížích

Proč úloha Dockeru ignoruje argumenty předané do příkazu buildAndPush?

Úloha Dockeru nakonfigurovaná pomocí příkazu buildAndPush ignoruje předané argumenty, protože jsou pro interní příkazy build a push nejednoznačné. Příkaz můžete rozdělit na samostatné kroky sestavení a odeslání a předat jim vhodné argumenty. Příklad najdete v tomto příspěvku na StackOverflow.

DockerV2 podporuje pouze připojení služby registru Dockeru a nepodporuje připojení služby ARM. Jak můžu použít existující instanční objekt Azure (SPN) k ověřování v úloze Dockeru?

Připojení ke službě registru Dockeru můžete vytvořit s použitím přihlašovacích údajů Azure SPN. Jako Typ registru vyberte Ostatní a zadejte následující podrobnosti:

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

Příklady

Přihlásit

Následující fragment kódu YAML ukazuje přihlášení registru kontejneru pomocí připojení ke službě registru Dockeru.

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

Sestavení a nabízení změn

Praktičnostní příkaz s názvem buildAndPush umožňuje sestavení a vložení imagí do registru kontejneru jediným příkazem.

Následující fragment kódu YAML je příkladem sestavení a vložení více značek image do více registrů.

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

Ve výše uvedeném fragmentu kódu se image contosoRepository:tag1 a contosoRepository:tag2 sestaví a nasdílí do registrů kontejnerů odpovídajících dockerRegistryServiceConnection1 a dockerRegistryServiceConnection2.

Pokud chcete sestavovat a nasdílovat je do konkrétního ověřeného registru kontejneru místo sestavování a nasdílení změn do všech ověřených registrů kontejnerů najednou, zadejte containerRegistry vstup explicitně tak command: buildAndPush , jak je znázorněno na obrázku:

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

Odhlásit

Následující fragment kódu YAML ukazuje, jak se odhlásit z registru kontejneru pomocí připojení ke službě registru Dockeru.

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

Zahájení/zastavení

Pomocí této úlohy můžete řídit kontejnery úloh a služeb. Toto použití je neobvyklé, ale občas se používá za jedinečných okolností.

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

Další příkazy a argumenty

Vstupy příkazů a argumentů se používají k předávání dalších argumentů pro příkazy sestavení nebo nabízení pomocí binárního souboru klienta Dockeru, jak je znázorněno v příkladu.

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

Poznámka

Vstup argumentů se vyhodnocuje pro všechny příkazy s výjimkou buildAndPush. buildAndPush je příkaz pro usnadnění (build následovaný příkazem push), arguments při použití se vstup ignoruje.

Požadavky

Požadavek Popis
Typy kanálů YAML, classic build, verze Classic
Spustí se Agent, DeploymentGroup
Požadavky Žádné
Možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
Omezení příkazů Všechny
Nastavitelné proměnné Všechny
Verze agenta 2.172.0 nebo vyšší
Kategorie úloh Sestavení
Požadavek Popis
Typy kanálů YAML, classic build, verze Classic
Spustí se Agent, DeploymentGroup
Požadavky Žádné
Možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
Omezení příkazů Všechny
Nastavitelné proměnné Všechny
Verze agenta Všechny podporované verze agenta.
Kategorie úloh Sestavení