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, logoutlogin, , 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 dockerRegistryServiceConnection2entsprechendockerRegistryServiceConnection1.

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 buildAndPushvon 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