イメージ ストリーミングを使用してコンテナの起動時間を短縮する

このドキュメントでは、イメージ ストリーミングを使用してコンテナ イメージを Batch コンテナ ジョブに pull する方法について説明します。

イメージ ストリーミングを使用すると、コンテナ イメージのダウンロードが完了する前に Batch ジョブを初期化できます。これには、次の利点があります。

  • 大きなイメージを pull する際のレイテンシの短縮
  • ジョブ実行開始までの時間の短縮

準備

制限事項

バッチイメージ ストリーミングには次の制限があります。

  • バッチは、Artifact Registry に保存されているコンテナ イメージに対してのみイメージ ストリーミングをサポートします。現在、Container Registry を使用してコンテナ イメージを管理している場合は、Artifact Registry に移行できます。
  • Batch ジョブの VM は、コンテナ イメージを Artifact Registry に保存する場所と同じロケーションで実行する必要があります。
  • Docker イメージ マニフェスト バージョン 2、スキーマ 1 を使用するコンテナはサポートされていません。
  • イメージ ストリーミングを使用する場合、コンテナの実行可能ファイルでは次のフィールドのみがサポートされます。
    • imageUri
    • commands
    • entrypoint
    • volumes
    • enableImageStreaming
  • 空のレイヤまたは重複するレイヤを含むコンテナ イメージはサポートされていません。

イメージ ストリーミングを使用するジョブを作成する

イメージ ストリーミングを使用する Batch コンテナジョブを作成するには、次のようにします。

Google Cloud CLI または REST API を使用して、コンテナジョブを作成します。コンテナ実行可能なイメージ ストリーミングを有効にするには、enableImageStreaming フィールドを true に設定し、ジョブの VM のロケーションが含まれる Artifact Registry のロケーションに保管されているイメージに imageUri フィールドを設定します。

"container": {
    ...
    "enableImageStreaming": true
        }

たとえば、イメージ ストリーミングを使用するジョブには、次のような JSON 構成ファイルがあります。

{
    "taskGroups": [
        {
            "taskCount": "1",
            "taskCountPerNode": "1",
            "taskSpec": {
                "runnables": [
                    {
                        "container": {
                            "imageUri": "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG",
                            "enableImageStreaming": true
                        }
                    }
                ]
            }
        }
    ],
    "allocationPolicy": {
        "instances": [
            {
                "policy": {
                    "machineType": "e2-standard-4"
                }
            }
        ]
    },
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

次の値を置き換えます。

  • LOCATION: イメージが保存されているリポジトリのリージョンまたはマルチリージョンのロケーションus-east1us など)です。コンテナのロケーションは、バッチジョブの VM のロケーションと同じである必要があります。
  • PROJECT-ID: コンテナ イメージを含むプロジェクト。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • REPOSITORY: イメージが保存されているリポジトリの名前。
  • IMAGE: コンテナ イメージの名前です。
  • TAG: イメージに適用されるタグ。

次のステップ