Mem-build image container multi-arsitektur untuk Dataflow

Jika Anda menggunakan penampung kustom di Dataflow, penampung harus cocok dengan arsitektur VM pekerja. Dokumen ini menjelaskan cara membuat penampung 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 tersebut telah diinstal, jalankan perintah berikut:

    docker buildx version
    
  3. Jalankan perintah berikut untuk membuat instance builder yang menggunakan driver docker-container. Driver ini diperlukan untuk mem-build image 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 image
    • 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 dengan Dockerfile, buat file bernama 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 image
    • 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 informasi selengkapnya, lihat Mem-build 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 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