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
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 ./
Instal alat Buildx. Untuk memeriksa apakah alat ini sudah diinstal, jalankan perintah berikut:
docker buildx version
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.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.
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
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 ./
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
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
Buka halaman Repositories di Konsol Google Cloud.
Klik repositori dengan image container.
Klik gambar untuk melihat versinya.
Klik salah satu versi.
Klik Manifes.
Dalam file manifes, bagian
platform
harus memiliki entri untukarm64
danamd64
. 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" } } ] }