次の方法で共有


Docker@2 - Docker v2 タスク

Docker イメージのビルドまたはプッシュ、ログインまたはログアウト、コンテナーの開始または停止、Docker コマンドの実行。

Docker イメージのビルドまたはプッシュ、ログインまたはログアウト、または Docker コマンドの実行。

構文

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

入力

containerRegistry - コンテナー レジストリ
string.

Docker レジストリ サービス接続の名前。 レジストリで認証を実行するコマンドに必要です。


repository - コンテナー リポジトリ
string. 省略可能。 の場合は command != login && command != logout && command != start && command != stopを使用します。

リポジトリの名前を指定します。


repository - コンテナー リポジトリ
string. 省略可能。 の場合は command != login && command != logoutを使用します。

リポジトリの名前を指定します。


command - コマンド
string. 必須です。 使用できる値: buildAndPushbuild、、 pushloginlogoutstartstop。 既定値: buildAndPush

実行する Docker コマンドを指定します。


command - コマンド
string. 必須です。 使用できる値: buildAndPush、、buildpushloginlogout。 既定値: buildAndPush

実行する Docker コマンドを指定します。


Dockerfile - Dockerfile
string. command = build || command = buildAndPush の場合に必要です。 既定値: **/Dockerfile

Docker ファイルへのパスを指定します。 このタスクでは、見つけた最初の Docker ファイルを使用してイメージをビルドします。


buildContext - ビルド コンテキスト
string. 省略可能。 の場合は command = build || command = buildAndPushを使用します。 既定値: **

ビルド コンテキストへのパスを指定します。 を渡 ** して、Docker ファイルを含むディレクトリを示します。


tags - タグ
string. 省略可能。 の場合は command = build || command = push || command = buildAndPushを使用します。 既定値: $(Build.BuildId)

コンマ区切りタグの一覧を指定します。 これらのタグは、 および buildAndPush コマンドでbuildpush使用されます。


arguments - 引数
string. 省略可能。 の場合は command != login && command != logout && command != buildAndPushを使用します。

Docker クライアントに渡す追加の引数を指定します。 コマンド パラメーターの値 buildAndPush を使用する場合、arguments プロパティは無視されます。

例: ビルド コマンド --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quietを使用します。


addPipelineData - パイプライン メタデータをイメージに追加する
boolean. 既定値: true

既定では、ソース ブランチ名やビルド ID などのパイプライン データが追加され、トレーサビリティに役立ちます。 たとえば、イメージを調査して、イメージをビルドしたパイプラインを確認できます。 この既定の動作はオプト アウトできます。


addBaseImageData - 基本イメージ メタデータをイメージに追加する
boolean. 既定値: true

既定では、基本イメージ名やダイジェストなどの基本イメージ データが追加され、トレーサビリティに役立ちます。 この既定の動作はオプト アウトできます。


container - コンテナー
string. 省略可能。 の場合は command = start || command = stopを使用します。

開始または停止するコンテナー リソースの名前を指定します。 このコマンドは、 コマンドと コマンドとstop共にstart使用します。


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

このタスクでは、ダウンストリームのステップ、ジョブ、およびステージで使用できる次の 出力変数を定義します。

DockerOutput
コマンド出力を含むファイルへのパスを指定します。 コマンドの 2 つのファイル パスを別々の行 buildAndPush に一覧表示し、もう 1 つのファイル パスを他のコマンドに一覧表示できます。

注釈

スクリプトで Docker クライアント バイナリを直接使用するのではなく、Docker タスクを使用する主な利点を次に示します。

  • Docker レジストリ サービス接続との統合 - タスクを使用すると、任意のコンテナー レジストリに接続するために Docker レジストリ サービス接続を簡単に使用できます。 サインインしたら、Docker タスクで使用されるサインオンを利用して、他のタスクまたはスクリプトを実行するフォローアップ タスクを追加できます。 たとえば、Docker タスクを使用して任意のAzure Container Registryにサインインし、別のタスクまたはスクリプトを使用してイメージをビルドしてレジストリにプッシュします。

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

    • 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

トラブルシューティング

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

buildAndPush コマンドを使用して構成された Docker タスクでは、渡された引数が無視されます。これは、引数が内部のビルド コマンドとプッシュ コマンドに対してあいまいになるためです。 コマンドを個別のビルド ステップとプッシュ ステップに分割し、適切な引数を渡すことができます。 例としては、こちらの stackoverflow の投稿を参照してください。

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

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

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

ログイン

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

- 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 # username/contosoRepository for DockerHub
    tags: |
      tag1
      tag2

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

すべての認証済みコンテナー レジストリを一度にビルドしてプッシュする代わりに、特定の認証済みコンテナー レジストリをビルドしてプッシュする場合は、次のように を使用して入力command: buildAndPushcontainerRegistry明示的に指定します。

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

Logout

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

- 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 # username/contosoRepository for DockerHub
    tags: tag1
    arguments: --secret id=mysecret,src=mysecret.txt

注意

引数の入力は、 を除く buildAndPushすべてのコマンドで評価されます。 buildAndPush は便利なコマンド (build の後に push続く ) arguments であり、使用される場合、入力は無視されます。

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.172.0 以上
タスクのカテゴリ Build
要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン サポートされているすべてのエージェント バージョン。
タスクのカテゴリ Build