Docker@2 – Docker v2-Aufgabe
Erstellen oder Übertragen von Docker-Images, Anmelden oder Abmelden, Starten oder Beenden von Containern oder Ausführen eines Docker-Befehls.
Erstellen oder übertragen 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.
Eingänge
containerRegistry
-
Containerregistrierung
string
.
Name der Docker-Registrierungsdienstverbindung. Erforderlich für Befehle, die die Authentifizierung mit einer Registrierung ausführen.
repository
-
Container-Repository
string
. Wahlfrei. Wird verwendet, wenn command != login && command != logout && command != start && command != stop
.
Gibt den Namen des Repositorys an.
repository
-
Container-Repository
string
. Wahlfrei. Wird verwendet, wenn command != login && command != logout
.
Gibt den Namen des Repositorys an.
command
-
Command
string
. Erforderlich. Zulässige Werte: buildAndPush
, build
, push
, login
, logout
, start
, stop
. Standardwert: buildAndPush
.
Gibt den auszuführenden Docker-Befehl an.
command
-
Command
string
. Erforderlich. Zulässige Werte: buildAndPush
, build
, push
, login
, logout
. Standardwert: buildAndPush
.
Gibt den auszuführenden Docker-Befehl an.
Dockerfile
-
Dockerfile-
string
. Erforderlich, wenn command = build || command = buildAndPush
. Standardwert: **/Dockerfile
.
Gibt den Pfad zur Docker-Datei an. Die Aufgabe verwendet die erste Docker-Datei, die zum Erstellen des Images gefunden wird.
buildContext
-
Buildkontext
string
. Wahlfrei. Wird verwendet, 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
-
Tags
string
. Wahlfrei. Wird verwendet, 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
. Wahlfrei. Wird verwendet, 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 Argumenteigenschaft 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 Quellverzweigungsname oder Build-ID hinzugefügt und helfen bei der Rückverfolgbarkeit. Sie können z. B. ein Bild prüfen, 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 Basisbilddaten wie Basisbildname oder Digest hinzugefügt und helfen bei der Rückverfolgbarkeit. Sie können dieses Standardverhalten deaktivieren.
container
-
Container-
string
. Wahlfrei. Wird verwendet, wenn command = start || command = stop
.
Gibt den Namen der containerressource an, die gestartet oder beendet werden soll. Verwenden Sie diesen Befehl mit start
und stop
Befehlen.
Aufgabensteuerungsoptionen
Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.
Ausgabevariablen
Mit dieser Aufgabe werden die folgenden Ausgabevariablendefiniert, die Sie in nachgeschalteten Schritten, Aufträgen und Phasen verwenden 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 Befehl buildAndPush
und einen Dateipfad für jeden anderen Befehl auflisten.
Bemerkungen
Im Folgenden finden Sie die wichtigsten Vorteile der Verwendung der Docker-Aufgabe anstelle der direkten Verwendung der Docker-Client-Binärdatei in einem Skript.
Integration mit Docker-Registrierungsdienstverbindung – Die Aufgabe erleichtert die Verwendung einer Docker-Registrierungsdienstverbindung für die Verbindung mit einer beliebigen Containerregistrierung. Nach der Anmeldung können Sie Nachverfolgungsaufgaben hinzufügen, die andere Aufgaben oder Skripts ausführen, indem Sie die von der Docker-Aufgabe verwendete Anmeldung nutzen. Verwenden Sie beispielsweise die Docker-Aufgabe, um sich bei einer beliebigen Azure-Containerregistrierung anzumelden, und verwenden Sie dann eine andere Aufgabe oder ein Skript, um ein Image in die Registrierung zu erstellen und zu übertragen.
Metadaten, die als Bezeichnungen hinzugefügt wurden – Die Aufgabe fügt dem Bild in den folgenden Bezeichnungen Rückverfolgbarkeitsmetadaten 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?
Eine Docker-Aufgabe, die mithilfe des befehls buildAndPush
konfiguriert ist, ignoriert die übergebenen Argumente, da sie für die internen Build- und Pushbefehle 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 die Docker-Registrierungsdienstverbindung und unterstützt keine ARM-Dienstverbindung. Wie kann ich einen vorhandenen Azure-Dienstprinzipal (SPN) für die Authentifizierung in Docker-Aufgaben verwenden?
Sie können mithilfe Ihrer Anmeldeinformationen für den Azure-SPN eine Verbindung mit dem Docker-Registrierungsdienst erstellen. Wählen Sie die anderen Personen aus dem 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
Einloggen
Der folgende YAML-Codeausschnitt zeigt eine Containerregistrierungsanmeldung mit einer Docker-Registrierungsdienstverbindung an.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Erstellen und Pushen
Ein Komfortbefehl namens buildAndPush
ermöglicht das Erstellen und Übertragen von Images in eine Containerregistrierung in einem einzigen Befehl.
Der folgende YAML-Codeausschnitt ist ein Beispiel für das Erstellen und Pushen mehrerer Tags eines Bilds an 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 Bilder contosoRepository:tag1
und contosoRepository:tag2
erstellt und an die Containerregister übertragen, die dockerRegistryServiceConnection1
und dockerRegistryServiceConnection2
entsprechen.
Wenn Sie eine bestimmte authentifizierte Containerregistrierung erstellen und übertragen möchten, anstatt alle authentifizierten Containerregistrierungen gleichzeitig zu erstellen und zu übertragen, geben Sie explizit die containerRegistry
Eingabe mit command: buildAndPush
an, wie gezeigt:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Abmeldung
Der folgende YAML-Codeausschnitt zeigt, wie Sie sich mit einer Docker-Registrierungsdienstverbindung aus 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, aber gelegentlich unter einzigartigen 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
Andere Befehle und Argumente
Die Befehls- und Argumenteingaben werden verwendet, um zusätzliche Argumente für Build- oder Pushbefehle mithilfe der Docker-Client-Binä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 Eingabe der Argumente wird für alle Befehle mit Ausnahme von buildAndPush
ausgewertet.
buildAndPush
ist ein Benutzerfreundlichkeitsbefehl (build
gefolgt von push
), arguments
Eingabe wird ignoriert, wenn sie verwendet wird.
Anforderungen
Anforderung | BESCHREIBUNG |
---|---|
Pipelinetypen | YAML, Classic Build, Classic Release |
Läuft auf | Agent, DeploymentGroup |
Anforderungen | Nichts |
Funktionen | Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag. |
Befehlseinschränkungen | Jegliche |
Settable-Variablen | Jegliche |
Agentversion | 2.172.0 oder höher |
Vorgangskategorie | Bauen |
Anforderung | BESCHREIBUNG |
---|---|
Pipelinetypen | YAML, Classic Build, Classic Release |
Läuft auf | Agent, DeploymentGroup |
Anforderungen | Nichts |
Funktionen | Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag. |
Befehlseinschränkungen | Jegliche |
Settable-Variablen | Jegliche |
Agentversion | Alle unterstützten Agentversionen. |
Vorgangskategorie | Bauen |