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.
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.
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ě.
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.
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, skupina nasazení |
| 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 |