Mem-build image container multi-arsitektur untuk Dataflow

Jika Anda menggunakan container kustom di Dataflow, container tersebut harus sesuai dengan arsitektur VM pekerja. Dokumen ini menjelaskan cara membuat container multi-arsitektur yang kompatibel dengan VM x86 dan Arm.

Anda dapat menggunakan Docker CLI atau Cloud Build untuk mem-build image container.

Menggunakan Docker untuk mem-build image

  1. Buat Dockerfile. Gunakan petunjuk FROM untuk menentukan image dasar multi-arsitektur.

    FROM apache/beam_python3.10_sdk:2.50.0
    
    # Make your customizations here, for example:
    ENV FOO=/bar
    COPY path/to/myfile ./
    
  2. Instal alat Buildx. Untuk memeriksa apakah alat ini sudah diinstal, jalankan perintah berikut:

    docker buildx version
    
  3. Jalankan perintah berikut untuk membuat instance builder yang menggunakan driver docker-container. Driver ini diperlukan untuk membuat gambar multi-arsitektur.

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

    Flag --use menetapkan instance builder baru sebagai builder saat ini.

  4. Jalankan perintah berikut untuk mengonfigurasi Docker guna mengautentikasi permintaan ke Artifact Registry.

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

    Ganti REGION dengan region repositori Artifact Registry.

  5. Jalankan perintah berikut untuk mem-build dan mengirim image container ke Artifact Registry:

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

    Ganti kode berikut:

    • REGISTRY: repositori Docker
    • IMAGE: nama gambar
    • TAG: tag gambar

Menggunakan Cloud Build untuk mem-build image

  1. Buat Dockerfile. Gunakan petunjuk FROM untuk menentukan image dasar multi-arsitektur.

    FROM apache/beam_python3.10_sdk:2.50.0
    
    # Make your customizations here, for example:
    ENV FOO=/bar
    COPY path/to/myfile ./
    
  2. Di direktori yang sama yang berisi Dockerfile, buat file dengan nama docker_buildx.yaml. Tempelkan teks berikut:

    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', '.']
    

    Ganti kode berikut:

    • REGISTRY: repositori Docker
    • IMAGE: nama gambar
    • TAG: tag gambar
  3. Untuk mem-build dan mengirim image, jalankan perintah gcloud builds submit:

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

    Ganti REGION dengan region layanan Cloud Build yang akan digunakan.

Untuk mengetahui informasi selengkapnya, baca Membangun dan mengirim image Docker dengan Cloud Build.

Memverifikasi image container

  1. Buka halaman Repositories di Konsol Google Cloud.

    Buka halaman Repositori

  2. Klik repositori dengan image container.

  3. Klik gambar untuk melihat versinya.

  4. Klik salah satu versi.

  5. Klik Manifes.

  6. Dalam file manifes, bagian platform harus memiliki entri untuk arm64 dan amd64. Contoh:

      {
        "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"
              }
            }
        ]
      }
    

Langkah selanjutnya