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
, , login
push
, , 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 build
pří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í |