Freigeben über


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 dockerRegistryServiceConnection2entsprechen.

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 buildAndPushausgewertet. 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