Docker@2 – Docker v2-Aufgabe
Erstellen oder Pushen von Docker-Images, Anmelden oder Abmelden, Starten oder Beenden von Containern oder Ausführen eines Docker-Befehls.
Erstellen oder pushen Sie Docker-Images, melden Sie sich an oder melden Sie sich ab, oder führen Sie einen Docker-Befehl aus.
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.
Eingaben
containerRegistry
-
Containerregistrierung
string
.
Name der Verbindung des Docker-Registrierungsdienstes. Erforderlich für Befehle, die die Authentifizierung mit einer Registrierung ausführen.
repository
-
Containerrepository
string
. Optional. Verwenden Sie , wenn command != login && command != logout && command != start && command != stop
.
Gibt den Namen des Repositorys an.
repository
-
Containerrepository
string
. Optional. Verwenden Sie , wenn command != login && command != logout
.
Gibt den Namen des Repositorys an.
command
-
Befehl
string
. Erforderlich. Zulässige Werte: buildAndPush
, build
, push
, logout
login
, , start
, . stop
Standardwert. buildAndPush
.
Gibt den docker-Befehl an, der ausgeführt werden soll.
command
-
Befehl
string
. Erforderlich. Zulässige Werte: buildAndPush
, build
, push
, login
, logout
. Standardwert. buildAndPush
.
Gibt den docker-Befehl an, der ausgeführt werden soll.
Dockerfile
-
Dockerfile
string
. Erforderlich, wenn command = build || command = buildAndPush
. Standardwert. **/Dockerfile
.
Gibt den Pfad zur Docker-Datei an. Der Task verwendet die erste Gefundene Docker-Datei, um das Image zu erstellen.
buildContext
-
Kontext erstellen
string
. Optional. Verwenden Sie , wenn command = build || command = buildAndPush
. Standardwert. **
.
Gibt den Pfad zum Buildkontext an. Übergeben Sie **
, um das Verzeichnis anzugeben, das die Docker-Datei enthält.
tags
-
Schilder
string
. Optional. Verwenden Sie , wenn command = build || command = push || command = buildAndPush
. Standardwert. $(Build.BuildId)
.
Gibt eine Liste von durch Trennzeichen getrennten Tags an. Diese Tags werden in build
- push
und buildAndPush
-Befehlen verwendet.
arguments
-
Argumente
string
. Optional. Verwenden Sie , wenn command != login && command != logout && command != buildAndPush
.
Gibt zusätzliche Argumente an, die an den Docker-Client übergeben werden sollen. Wenn Sie den Wert buildAndPush
für den Befehlsparameter verwenden, wird die arguments-Eigenschaft ignoriert.
Beispiel: Verwenden des Buildbefehls --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Hinzufügen von Pipelinemetadaten zu Bildern
boolean
. Standardwert. true
.
Standardmäßig werden Pipelinedaten wie Quellbranchname oder Build-ID hinzugefügt und helfen bei der Nachverfolgbarkeit. Sie können beispielsweise ein Image untersuchen, um herauszufinden, welche Pipeline das Image erstellt hat. Sie können dieses Standardverhalten deaktivieren.
addBaseImageData
-
Hinzufügen von Basisbildmetadaten zu Bildern
boolean
. Standardwert. true
.
Standardmäßig werden Basisimagedaten wie Der Name des Basisimages oder der Digest hinzugefügt, die bei der Rückverfolgbarkeit helfen. Sie können dieses Standardverhalten deaktivieren.
container
-
Container
string
. Optional. Verwenden Sie , wenn command = start || command = stop
.
Gibt den Namen der Containerressource an, die gestartet oder beendet werden soll. Verwenden Sie diesen Befehl mit start
und-Befehlen stop
.
Optionen für die Vorgangskontrolle
Alle Vorgänge verfügen zusätzlich zu ihren Eingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.
Ausgabevariablen
Diese Aufgabe definiert die folgenden Ausgabevariablen, die Sie in nachgelagerten Schritten, Aufträgen und Phasen nutzen können.
DockerOutput
Gibt den Pfad zu den Dateien an, die die Befehlsausgabe enthalten. Sie können zwei Dateipfade in separaten Zeilen für den buildAndPush
Befehl und einen Dateipfad für jeden anderen Befehl auflisten.
Hinweise
Im Folgenden sind die wichtigsten Vorteile der Verwendung der Docker-Aufgabe anstelle der direkten Verwendung der Docker-Clientbinärdatei in einem Skript aufgeführt.
Integration mit Docker-Registrierungsdienstverbindung : Die Aufgabe erleichtert die Verwendung einer Docker-Registrierungsdienstverbindung für die Verbindung mit einer Containerregistrierung. Nach der Anmeldung können Sie Folgeaufgaben hinzufügen, die andere Aufgaben oder Skripts ausführen, indem Sie die Anmeldung nutzen, die von der Docker-Aufgabe verwendet wird. Verwenden Sie beispielsweise den Docker-Task, um sich bei einem beliebigen Azure Container Registry anzumelden, und verwenden Sie dann einen anderen Task oder ein anderes Skript, um ein Image zu erstellen und in die Registrierung zu übertragen.
Als Bezeichnungen hinzugefügte Metadaten : Der Task fügt dem Bild in den folgenden Bezeichnungen Metadaten im Zusammenhang mit der Rückverfolgbarkeit hinzu:
- 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
Problembehandlung
Warum ignoriert der Docker-Task die an den Befehl „buildAndPush“ übergebenen Argumente?
Ein Docker-Task, der mithilfe des Befehls buildAndPush
konfiguriert wurde, ignoriert die übergebenen Argumente, da sie für die internen Befehle zum Erstellen und Pushen mehrdeutig werden. Sie können Ihren Befehl in separate Schritte zum Erstellen und Pushen unterteilen und die entsprechenden Argumente übergeben. Ein Beispiel hierzu finden Sie in diesem Stackoverflow-Beitrag.
DockerV2 unterstützt nur eine Docker-Registrierungsdienstverbindung und keine ARM-Dienstverbindung. Wie kann ich einen vorhandenen Azure-Dienstprinzipal (SPN) für die Authentifizierung im Docker-Task verwenden?
Sie können mithilfe Ihrer Anmeldeinformationen für den Azure-SPN eine Verbindung mit dem Docker-Registrierungsdienst erstellen. Wählen Sie die anderen aus „Registrierungstyp“ aus, und geben Sie die Details wie folgt an:
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Beispiele
Anmelden
Der folgende YAML-Codeausschnitt zeigt die Anmeldung einer Containerregistrierung mithilfe einer Docker-Registrierungsdienstverbindung.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Erstellen und Pushen
Ein einfacher Befehl namens buildAndPush
ermöglicht das Erstellen und Pushen von Images in einer Containerregistrierung in einem einzigen Befehl.
Der folgende YAML-Codeausschnitt ist ein Beispiel für das Erstellen und Pushen mehrerer Tags eines Images in mehrere Registrierungen.
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
Im obigen Codeausschnitt werden die Images contosoRepository:tag1
und contosoRepository:tag2
erstellt und in die Containerregistrierungen gepusht, die und dockerRegistryServiceConnection2
entsprechendockerRegistryServiceConnection1
.
Wenn Sie eine bestimmte authentifizierte Containerregistrierung erstellen und in eine bestimmte authentifizierte Containerregistrierung pushen möchten, anstatt alle authentifizierten Containerregistrierungen gleichzeitig zu erstellen und zu pushen, geben Sie die containerRegistry
Eingabe explizit mit command: buildAndPush
an, wie gezeigt:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Logout
Der folgende YAML-Codeausschnitt zeigt, wie Sie sich mithilfe einer Docker-Registrierungsdienstverbindung von einer Containerregistrierung abmelden.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Starten/Beenden
Verwenden Sie diese Aufgabe, um Auftrags- und Dienstcontainer zu steuern. Diese Verwendung ist ungewöhnlich, wird aber gelegentlich unter besonderen Umständen verwendet.
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
Weitere Befehle und Argumente
Die Befehls- und Argumenteingaben werden verwendet, um zusätzliche Argumente für Build- oder Pushbefehle mithilfe der Docker-Clientbinärdatei zu übergeben, wie im Beispiel gezeigt.
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
Hinweis
Die Argumenteingabe wird für alle Befehle mit Ausnahme buildAndPush
von ausgewertet.
buildAndPush
ist ein bequemer Befehl (build
gefolgt von push
), arguments
die Eingabe wird ignoriert, wenn sie verwendet wird.
Anforderungen
Anforderung | BESCHREIBUNG |
---|---|
Pipelinetypen | YAML, Klassischer Build, klassisches Release |
Wird ausgeführt auf | Agent, DeploymentGroup |
Forderungen | Keine |
Capabilities | Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag. |
Befehlseinschränkungen | Any |
Setzbare Variablen | Any |
Agent-Version | 2.172.0 oder höher |
Aufgabenkategorie | Entwickeln |
Anforderung | BESCHREIBUNG |
---|---|
Pipelinetypen | YAML, Klassischer Build, klassisches Release |
Wird ausgeführt auf | Agent, DeploymentGroup |
Forderungen | Keine |
Capabilities | Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag. |
Befehlseinschränkungen | Any |
Setzbare Variablen | Any |
Agent-Version | Alle unterstützten Agent-Versionen. |
Aufgabenkategorie | Entwickeln |