Dataflow 用のマルチアーキテクチャ コンテナ イメージをビルドする

Dataflow でカスタム コンテナを使用する場合、コンテナがワーカー VM のアーキテクチャと一致している必要があります。このドキュメントでは、x86 VM と Arm VM の両方と互換性のあるマルチアーキテクチャ コンテナを作成する方法について説明します。

コンテナ イメージをビルドするには、Docker CLI または Cloud Build を使用します。

Docker を使用してイメージをビルドする

  1. Dockerfile を作成します。FROM 命令を使用して、マルチアーキテクチャ ベースイメージを指定します。

    FROM apache/beam_python3.10_sdk:2.50.0
    
    # Make your customizations here, for example:
    ENV FOO=/bar
    COPY path/to/myfile ./
    
  2. Buildx ツールをインストールします。ツールがインストールされているかどうかを確認するには、次のコマンドを実行します。

    docker buildx version
    
  3. 次のコマンドを実行して、docker-container ドライバを使用するビルダー インスタンスを作成します。このドライバは、マルチアーキテクチャ イメージのビルドに必要です。

    docker buildx create --driver=docker-container --use
    

    --use フラグを使用して、新しいビルダー インスタンスを現在のビルダーとして設定します。

  4. 次のコマンドを実行して、Artifact Registry へのリクエストを認証するように Docker を構成します。

    gcloud auth configure-docker REGION-docker.pkg.dev
    

    REGION は、Artifact Registry リポジトリのリージョンに置き換えます。

  5. 次のコマンドを実行してコンテナ イメージをビルドし、Artifact Registry に push します。

    docker buildx build \
      --platform=linux/amd64,linux/arm64 \
      -t REGISTRY/IMAGE:TAG  \
      --push .
    

    次のように置き換えます。

    • REGISTRY: Docker リポジトリ
    • IMAGE: イメージ名
    • TAG: イメージタグ

Cloud Build を使用してイメージをビルドする

  1. Dockerfile を作成します。FROM 命令を使用して、マルチアーキテクチャ ベースイメージを指定します。

    FROM apache/beam_python3.10_sdk:2.50.0
    
    # Make your customizations here, for example:
    ENV FOO=/bar
    COPY path/to/myfile ./
    
  2. Dockerfile が存在するディレクトリに、docker_buildx.yaml という名前のファイルを作成します。次のテキストを貼り付けます。

    steps:
    - name: 'docker'
      args: ['buildx', 'create', '--driver', 'docker-container', '--name', 'container', '--use']
    - name: 'docker'
      args: ['buildx', 'build', '--platform', 'linux/amd64,linux/arm64', '-t', 'REGISTRY/IMAGE:TAG', '--push', '.']
    

    次のように置き換えます。

    • REGISTRY: Docker リポジトリ
    • IMAGE: イメージ名
    • TAG: イメージタグ
  3. イメージをビルドして push するには、gcloud builds submit コマンドを実行します。

    gcloud builds submit --region=REGION --config docker_buildx.yaml
    

    REGION は、使用する Cloud Build サービスのリージョンに置き換えます。

詳細については、Cloud Build で Docker イメージをビルドして push するをご覧ください。

コンテナ イメージを確認する

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. コンテナ イメージのあるリポジトリをクリックします。

  3. イメージをクリックすると、そのバージョンが表示されます。

  4. バージョンをクリックします。

  5. [マニフェスト] をクリックします。

  6. マニフェスト ファイルの platform セクションには、arm64amd64 のエントリが必要です。例:

      {
        "schemaVersion": 2,
        "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
        "manifests": [
            {
              "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
              "digest": "sha256:441d5438885049e2b388523a8cb5b77ea829c3c3f53326fb221fe185abd67f07",
              "size": 3074,
              "platform": {
                  "architecture": "amd64",
                  "os": "linux"
              }
            },
            {
              "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
              "digest": "sha256:d3b98b0f8f3f555f5453c79b240bd2b862d4f52d853fe81bae55f01a663de29c",
              "size": 3073,
              "platform": {
                  "architecture": "arm64",
                  "os": "linux"
              }
            }
        ]
      }
    

次のステップ