Docker タスク

このタスクは、docker レジストリサービス接続を使用して、任意のコンテナーレジストリに Docker イメージをビルドしてプッシュする場合に使用します。

概要

Docker タスクをスクリプトで直接使用する場合と比較して、docker タスクを使用する主な利点は次のとおりです。

  • Docker registry サービス接続との統合 -このタスクにより、docker registry サービス接続を使用して任意のコンテナーレジストリに接続することが簡単になります。 ログインすると、ユーザーは、Docker タスクによって既に実行されているログインを利用して、タスクやスクリプトを実行するためのフォローアップタスクを作成できます。 たとえば、Docker タスクを使用して任意の Azure Container Registry にサインインし、その後のタスク/スクリプトを使用して、このレジストリにイメージをビルドしてプッシュすることができます。

  • ラベルとして追加されたメタデータ -タスクは、追跡に関連するメタデータを次のラベルの形式で画像に追加します。

    • .com... dev. ビルド
    • builduri (com... イメージ)
    • .com... dev. definitionname
    • com.azure.dev.image.build.repository.name
    • .com......。
    • sourcebranchname (com... イメージ)
    • com........ build... ビルド. sourceversion
    • .com... definitionname definitionname
    • .com... release. releaseid
    • releaseweburl (com... イメージ)
    • com.azure.dev.image.system のコレクション
    • com.azure.dev.image.system teamproject

タスクの入力

パラメーター 説明
command
コマンド
必要使用可能な値: buildAndPush 、、 build pushloginlogout
2.173.0 のバージョンで追加されました: startstop
既定値:buildAndPush
containerRegistry
コンテナー レジストリ
OptionalDocker registry サービス接続の名前
repository
リポジトリ
Optionalコンテナーレジストリ内のリポジトリの名前。入力として指定された Docker registry サービス接続に対応します。 containerRegistry
container
コンテナー
(コマンドとの場合は必須 start stop ) 開始または停止するコンテナーリソース
tags
Tags
Optional行ごとに入力します。各行に build は、、 push または buildAndPush コマンドで使用するタグが含まれています。
既定値:$(Build.BuildId)
Dockerfile
Dockerfile
OptionalDockerfile へのパス。 タスクは、見つかった 最初 の dockerfile を使用してイメージをビルドします。
既定値:**/Dockerfile
buildContext
ビルドコンテキスト
Optionalビルドコンテキストへのパス
既定値:**
arguments
引数
OptionalDocker クライアントに渡される追加の引数
パラメーターの値を使用する場合、プロパティは無視されることに注意 buildAndPush command して arguments ください。
addPipelineData
パイプラインデータの追加
Optional前述のメタデータをラベルとしてイメージに追加します。
指定できる値: truefalse
既定値:true

ログイン

次の YAML スニペットは、Docker registry サービス接続を使用したコンテナーレジストリのログインを示しています。

- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1

ビルドとプッシュ

BuildAndPush という便利なコマンドを使用すると、イメージを1つのコマンドでコンテナーレジストリにビルドおよびプッシュすることができます。 次の YAML スニペットは、複数のレジストリにイメージの複数のタグを作成してプッシュする例です。

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
    tags: |
      tag1
      tag2

上のスニペットでは、イメージ contosoRepository:tag1contosoRepository:tag2 がビルドされ、およびに対応するコンテナーレジストリにプッシュされ dockerRegistryServiceConnection1 dockerRegistryServiceConnection2 ます。

すべての認証済みコンテナーレジストリを一度に構築してプッシュするのではなく、特定の認証済みコンテナーレジストリをビルドしてプッシュする場合は、次に示すように、と共に containerRegistry 入力を明示的に指定できます。 command: buildAndPush

steps:
- task: Docker@2
  displayName: Build and Push
  inputs:
    command: buildAndPush
    containerRegistry: dockerRegistryServiceConnection1
    repository: contosoRepository
    tags: |
      tag1
      tag2

Logout

次の YAML スニペットは、Docker registry サービス接続を使用したコンテナーレジストリのログアウトを示しています。

- task: Docker@2
  displayName: Logout of ACR
  inputs:
    command: logout
    containerRegistry: dockerRegistryServiceConnection1

開始/停止

このタスクは、ジョブおよびサービスコンテナーの制御にも使用できます。 この使用方法は一般的ではありませんが、固有の状況に使用されることがあります。

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

その他のコマンドと引数

コマンドと引数の入力を使用して、次に示すように、docker クライアントバイナリを使用してビルドまたはプッシュコマンドの追加の引数を渡すことができます。

steps:
- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1
- task: Docker@2
  displayName: Build
  inputs:
    command: build
    repository: contosoRepository
    tags: tag1
    arguments: --secret id=mysecret,src=mysecret.txt

注意

引数の入力は、を除くすべてのコマンドに対して評価され buildAndPush ます。 buildAndPushは便利なコマンド (の build 後に続く) として pusharguments このコマンドの入力は無視されます。

トラブルシューティング

Docker タスクが buildAndPush コマンドに渡された引数を無視するのはなぜですか。

BuildAndPush コマンドで構成された Docker タスクは、内部で実行されるビルドおよびプッシュコマンドにあいまいになるため、渡された引数を無視します。 コマンドを別のビルドおよびプッシュステップに分割し、適切な引数を渡すことができます。 例については、この stackoverflow の投稿 をご覧ください。

DockerV2 は、Docker registry サービス接続のみをサポートしており、ARM サービス接続をサポートしていません。 Docker タスクで認証に既存の Azure サービスプリンシパル (SPN) を使用するにはどうすればよいですか。

Docker registry サービス接続は、Azure SPN の資格情報を使用して作成できます。 [レジストリの種類] から [その他] を選択し、次のように詳細を指定します。

Docker Registry:    Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID:          Service principal client ID
Password:           Service principal key

ソースを開く

このタスクは、 GitHub のオープンソースです。 フィードバックと投稿が歓迎されます。