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 Docker-Registrierungsdienstverbindung. 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
, login
push
, logout
, start
, , , stop
. Standardwert. buildAndPush
.
Gibt den auszuführenden Docker-Befehl an.
command
- Befehl
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 gefundene Docker-Datei, um das Image zu erstellen.
buildContext
- Buildkontext
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 Tags in separaten Zeilen an. Diese Tags werden in build
den Befehlen , push
und buildAndPush
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 Rückverfolgbarkeit. 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 Basisimagemetadaten zu Bildern
boolean
. Standardwert. true
.
Standardmäßig werden Basisimagedaten wie Der Name des Basisimages oder der Digest hinzugefügt und helfen bei der Rückverfolgbarkeit. 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
den Befehlen und stop
.
Aufgabensteuerungsoptionen
Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.
Ausgabevariablen
Diese Aufgabe definiert die folgenden Ausgabevariablen, die Sie in Downstreamschritten, 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 buildAndPush
Befehl und einen Dateipfad für jeden anderen Befehl auflisten.
Hinweise
Im Folgenden finden Sie die wichtigsten Vorteile der Verwendung der Docker-Aufgabe anstelle der direkten Verwendung der Docker-Clientbinärdatei in einem Skript.
Integration mit Docker-Registrierungsdienstverbindung : Die Aufgabe erleichtert die Verwendung einer Docker-Registrierungsdienstverbindung zum Herstellen einer 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 die Docker-Aufgabe, um sich bei einer beliebigen Azure Container Registry anzumelden, und verwenden Sie dann eine andere Aufgabe 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 die Docker-Aufgabe Argumente, die an den Befehl buildAndPush übergeben werden?
Eine docker-Aufgabe, die mit dem buildAndPush
Befehl konfiguriert wurde, ignoriert die übergebenen Argumente, da sie für die internen Build- und Pushbefehle mehrdeutig werden. Sie können Ihren Befehl in separate Build- und Pushschritte aufteilen und die geeigneten Argumente übergeben. Sehen Sie sich z. B. diesen Stackoverflow-Beitrag an.
DockerV2 unterstützt nur die Verbindung mit dem Docker-Registrierungsdienst und nicht die ARM-Dienstverbindung. Wie kann ich einen vorhandenen Azure-Dienstprinzipal (SPN) für die Authentifizierung im Docker-Task verwenden?
Sie können eine Docker-Registrierungsdienstverbindung mit Ihren Azure SPN-Anmeldeinformationen erstellen. Wählen Sie die anderen unter 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 eine Containerregistrierungsanmeldung mithilfe einer Docker-Registrierungsdienstverbindung.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Erstellen und Pushen
Ein Komfortbefehl namens buildAndPush
ermöglicht das Erstellen und Pushen 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 Images 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 Images contosoRepository:tag1
und contosoRepository:tag2
erstellt und an die Containerregistrierungen gepusht, die und dockerRegistryServiceConnection2
entsprechendockerRegistryServiceConnection1
.
Wenn Sie eine bestimmte authentifizierte Containerregistrierung erstellen und pushen möchten, anstatt alle authentifizierten Containerregistrierungen gleichzeitig zu erstellen und zu pushen, geben Sie die containerRegistry
Eingabe explizit mit command: buildAndPush
an:
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 Containerregistrierungsregistrierung 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 bestimmten 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-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 Komfortbefehl (build
gefolgt von push
), arguments
die Eingabe wird ignoriert, wenn sie verwendet wird.
Anforderungen
Anforderung | Beschreibung |
---|---|
Pipelinetypen | YAML, Klassischer Build, klassische Version |
Wird ausgeführt auf | Agent, DeploymentGroup |
Forderungen | Keine |
Capabilities | Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag. |
Befehlseinschränkungen | Any |
Einstellbare Variablen | Any |
Agent-Version | 2.172.0 oder höher |
Aufgabenkategorie | Entwickeln |
Anforderung | Beschreibung |
---|---|
Pipelinetypen | YAML, Klassischer Build, klassische Version |
Wird ausgeführt auf | Agent, DeploymentGroup |
Forderungen | Keine |
Capabilities | Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag. |
Befehlseinschränkungen | Any |
Einstellbare Variablen | Any |
Agent-Version | Alle unterstützten Agent-Versionen. |
Aufgabenkategorie | Entwickeln |