タスクを使用したコンテナーのビルドと管理

完了

Azure Container Registry (ACR) タスクは、次の機能のスイートです。

  • Linux、Windows、Advanced RISC Machines (Arm) などのプラットフォーム用にクラウドベースのコンテナー イメージのビルドを提供します。
  • オンデマンド コンテナー イメージ ビルドを使用して、アプリケーション開発サイクルの初期部分をクラウドに拡張します。
  • ソース コードの更新、コンテナーの基本イメージの更新、またはタイマーによってトリガーされる自動化されたビルドを有効にします。

一般的なシナリオ

ACR タスクでは、コンテナー イメージやその他の成果物をビルドし、保守管理するためのシナリオをいくつかサポートしています。

  • クイック タスク - ローカル Docker エンジンをインストールすることなく、Azure で 1 つのコンテナー イメージをオンデマンドでビルドし、コンテナー レジストリにプッシュします。 クラウドでの docker builddocker push を思い浮かべてください。

  • 自動的にトリガーされたタスク - イメージをビルドする目的で 1 つまたは複数のトリガーを有効にします。

    • ソース コードの更新でトリガー
    • 基本イメージの更新でトリガー
    • スケジュールに従ってトリガー
  • マルチ ステップ タスク - 複数のステップから成る複数コンテナー ベースのワークフローを持つ、ACR タスクの単一イメージのビルドおよびプッシュ機能を拡張します。

各 ACR タスクには、ソース コード コンテキストが関連付けられます - コンテナー イメージまたはその他の成果物のビルドに使用される一連のソース ファイルの場所。 見本のコンテキストには、Git リポジトリまたはローカル ファイルシステムが含まれます。

クイック タスク

"内部ループ" 開発サイクルは、コードの記述、ビルド、およびソース管理にコミットする前のアプリケーションのテストの反復的なプロセスです。 実のところ、これはコンテナー ライフサイクル管理の開始点です。

ACR タスクのクイック タスク機能は、コードの 1 行目をコミットする前でさえ、コンテナー イメージのビルドを Azure にオフロードすることで、統合された開発環境を提供できます。 クイック タスクを使用すると、コードをコミットする前に、自動化されたビルド定義を検証し、潜在的な問題を知ることができます。

よく知られている docker build 形式を使用して、Azure CLI の az acr build コマンドはコンテキスト (ビルド対象の一連のファイル) を取得して ACR タスクに送信し、既定では、完了時にビルド済みのイメージをそのレジストリにプッシュします。

ソース コードの更新でタスクをトリガーする

GitHub の Git リポジトリまたは Azure DevOps Services にコードがコミットされたとき、あるいは、プル要求が行われたか更新されたとき、コンテナー イメージのビルドまたは複数手順のタスクをトリガーします。 たとえば、Git リポジトリと、必要に応じてブランチや Dockerfile を指定することにより、Azure CLI コマンド az acr task create を使用してビルド タスクを構成します。 チームがリポジトリのコードを更新すると、ACR タスクで作成された Webhook が、リポジトリで定義されているコンテナー イメージのビルドをトリガーします。

基本イメージの更新でトリガー

アプリケーション イメージをビルドするときに基本イメージ上の依存関係を追跡するように ACR タスクを設定できます。 更新された基本イメージがレジストリにプッシュされると、または基本イメージが Docker Hub などのパブリック リポジトリで更新されると、ACR タスクではそれに基づいてすべてのアプリケーション イメージを自動的にビルドできます。

タスクのスケジュール設定

任意で、タスクの作成時または更新時に 1 つまたは複数の "タイマー トリガー" を設定し、タスクをスケジュール設定します。 タスクのスケジュール設定は、決まったスケジュールでコンテナー ワークロードを実行する場合やレジストリに定期的にプッシュされるイメージで保守管理操作やテストを実行する場合に役立ちます。

複数ステップのタスク

YAML ファイルで定義された複数ステップのタスクでは、コンテナー イメージまたは他の成果物に対する個々のビルドおよびプッシュ操作を指定します。 各ステップで実行環境としてコンテナーを使用するように、1 つまたは複数のコンテナーの実行を定義することもできます。 たとえば、以下を自動化するマルチ ステップ タスクを作成できます。

  1. Web アプリケーション イメージをビルドする
  2. Web アプリケーション コンテナーを実行する
  3. Web アプリケーションのテスト イメージをビルドする
  4. 実行中のアプリケーション コンテナーに対するテストを実行する Web アプリケーション テスト コンテナーを実行する
  5. テストに成功した場合は Helm グラフのアーカイブ パッケージをビルドする
  6. 新しい Helm グラフのアーカイブ パッケージを使用して helm upgrade を実行する

イメージのプラットフォーム

既定では、ACR タスクによって Linux OS と amd64 アーキテクチャ用のイメージが構築されます。 他のアーキテクチャ用の Windows イメージまたは Linux イメージを構築するための --platform タグを指定します。 OS と、必要に応じて OS/アーキテクチャ形式 (--platform Linux/arm など) でサポートされているアーキテクチャを指定します。 ARM アーキテクチャの場合は、必要に応じて、次のように OS/アーキテクチャ/バリアント形式でバリアントを指定します (例: --platform Linux/arm64/v8)。

OS Architecture
Linux AMD64
Arm
Arm64
386
Windows AMD64