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
を使用します。
開始または停止するコンテナー リソースの名前を指定します。 コマンドと コマンドを start
使用して、このコマンドを stop
使用します。
タスク コントロール のオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。
出力変数
このタスクでは、ダウンストリームのステップ、ジョブ、およびステージで使用できる次の 出力変数を定義します。
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 |