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.
入力
repository
-
コンテナー リポジトリ
string
. 省略可能。 の場合は command != login && command != logout && command != start && command != stop
を使用します。
リポジトリの名前を指定します。
repository
-
コンテナー リポジトリ
string
. 省略可能。 の場合は command != login && command != logout
を使用します。
リポジトリの名前を指定します。
command
-
コマンド
string
. 必須です。 使用できる値: buildAndPush
、 build
、、 push
、 login
、 logout
、 start
、 stop
。 既定値: buildAndPush
。
実行する Docker コマンドを指定します。
command
-
コマンド
string
. 必須です。 使用できる値: buildAndPush
、、build
、push
、login
logout
。 既定値: 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
コマンドでbuild
push
使用されます。
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:tag1
と contosoRepository:tag2
がビルドされ、 と に対応するコンテナー レジストリにdockerRegistryServiceConnection1
dockerRegistryServiceConnection2
プッシュされます。
すべての認証済みコンテナー レジストリを一度にビルドしてプッシュする代わりに、特定の認証済みコンテナー レジストリをビルドしてプッシュする場合は、次のように を使用して入力command: buildAndPush
をcontainerRegistry
明示的に指定します。
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 |