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.
入力
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)
.
コンマ区切りのタグの一覧を指定します。 これらのタグは、build
、push
、および buildAndPush
コマンドで使用されます。
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
コマンド出力を含むファイルへのパスを指定します。
buildAndPush
コマンドの 2 つのファイル パスと、他のコマンドの 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
ログアウト
次の 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
入力は使用されるときに無視されます。