Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Sestavte nebo nasdílejte image Dockeru, přihlaste se nebo 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.
Syntaxe
# 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.
Vstupy
registru kontejneru containerRegistry -
string.
Název připojení služby registru Dockeru. Vyžaduje se pro příkazy, které provádějí ověřování pomocí registru.
úložiště kontejneru repository -
string. Volitelný. Používá se při command != login && command != logout && command != start && command != stop.
Určuje název úložiště.
úložiště kontejneru repository -
string. Volitelný. Používá se při command != login && command != logout.
Určuje název úložiště.
command
-
command
string. Povinné. Povolené hodnoty: buildAndPush, build, push, login, logout, start, stop. Výchozí hodnota: buildAndPush.
Určuje příkaz Dockeru, který se má spustit.
command
-
command
string. Povinné. Povolené hodnoty: buildAndPush, build, push, login, logout. Výchozí hodnota: buildAndPush.
Určuje příkaz Dockeru, který se má spustit.
souboru Dockerfile Dockerfile -
string. Požadováno při command = build || command = buildAndPush. Výchozí hodnota: **/Dockerfile.
Určuje cestu k souboru Dockeru. Úloha používá první soubor Dockeru, který najde k sestavení image.
kontext sestavení buildContext -
string. Volitelný. Používá se při command = build || command = buildAndPush. Výchozí hodnota: **.
Určuje cestu k kontextu sestavení. Předejte ** označující adresář, který obsahuje soubor Dockeru.
značky tags -
string. Volitelný. Používá se při 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 příkazech build, push a buildAndPush.
argumentů
string. Volitelný. Používá se při 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, bude vlastnost argumentů ignorována.
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 do obrázků
boolean. Výchozí hodnota: true.
Ve výchozím nastavení se přidávají data kanálu, jako je název zdrojové větve nebo ID sestavení, a pomáhají s sledovatelností. Můžete například zkontrolovat image a zjistit, který kanál image sestavil. Můžete se odhlásit z tohoto výchozího chování.
addBaseImageData
-
Přidání metadat základní image do imagí
boolean. Výchozí hodnota: true.
Ve výchozím nastavení se přidávají data základních imagí, jako je název základní image nebo digest, a pomáhají s sledovatelností. Můžete se odhlásit z tohoto výchozího chování.
container
-
kontejneru
string. Volitelný. Používá se při command = start || command = stop.
Určuje název prostředku kontejneru, který se má spustit nebo zastavit. Tento příkaz použijte s příkazy start a stop.
Možnosti ovládání úloh
Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace naleznete v tématu Možnosti ovládacího prvku a běžné vlastnosti úloh.
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 buildAndPush můžete vypsat dvě cesty k souborům na samostatných řádcích a jednu cestu k souboru pro jakýkoli jiný příkaz.
Poznámky
Následující 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 připojení služby registru Dockeru pro připojení k libovolnému registru kontejneru. Po přihlášení můžete přidat další úlohy, které provádějí jiné úkoly nebo skripty, a to pomocí přihlašování používaného úlohou Dockeru. Pomocí úlohy Dockeru se například přihlaste k libovolné službě Azure Container Registry a pak pomocí jiné úlohy nebo skriptu sestavte a odešlete image do registru.
Metadata přidaná jako popisky – úloha přidá do obrázku metadata související s sledovatelností do následujících popisků.
- com.azure.dev.image.build.build number
- 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
Řešení problémů
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 nejednoznačné pro interní příkazy sestavení a nabízení. 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. Zvolte ostatní z typu registru 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ášení do systému
- YAML
- Klasické
Následující fragment kódu YAML ukazuje přihlášení registru kontejneru pomocí připojení služby registru Dockeru.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Sestavení a nasdílení změn
Příkaz s názvem buildAndPush umožňuje sestavení a nasdílení imagí do registru kontejneru v jednom příkazu.
- YAML
- Klasické
Následující fragment kódu YAML je příkladem sestavení a nasdílením několika 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 jsou image contosoRepository:tag1 a contosoRepository:tag2 vytvořeny a vloženy do registrů kontejnerů odpovídajících dockerRegistryServiceConnection1 a dockerRegistryServiceConnection2.
Pokud chcete sestavit a odeslat do konkrétního ověřeného registru kontejneru místo sestavení a nasdílení změn do všech ověřených registrů kontejnerů najednou, explicitně zadejte containerRegistry vstup pomocí command: buildAndPush, jak je znázorněno níže:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Odhlášení
- YAML
- Klasické
Následující fragment kódu YAML ukazuje, jak se odhlásit z registru kontejneru pomocí připojení služby registru Dockeru.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Spuštění/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ů slouží k předání dalších argumentů pro příkazy sestavení nebo zápisu 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 vyhodnotí pro všechny příkazy s výjimkou buildAndPush.
buildAndPush je příkaz pro usnadnění (build následovaný push), arguments vstup se při použití ignoruje.
Požadavky
| Požadavek | Popis |
|---|---|
| Typy kanálů | YAML, klasické sestavení, klasická verze |
| Běží na | Agent, DeploymentGroup |
| požadavky | Žádný |
| možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
| omezení příkazů | Jakýkoliv |
| nastavitelné proměnné | Jakýkoliv |
| Verze agenta | 2.172.0 nebo vyšší |
| Kategorie úkolu | Stavět |
| Požadavek | Popis |
|---|---|
| Typy kanálů | YAML, klasické sestavení, klasická verze |
| Běží na | Agent, DeploymentGroup |
| požadavky | Žádný |
| možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
| omezení příkazů | Jakýkoliv |
| nastavitelné proměnné | Jakýkoliv |
| Verze agenta | Všechny podporované verze agenta. |
| Kategorie úkolu | Stavět |