אם משתמשים בקונטיינר מותאם אישית ב-Dataflow, הקונטיינר צריך להתאים לארכיטקטורה של מכונות ה-VM של העובדים. במאמר הזה מוסבר איך ליצור קונטיינרים מרובי-ארכיטקטורה שתואמים למכונות וירטואליות (VM) של x86 ו-Arm.
אפשר להשתמש ב-Docker CLI או ב-Cloud Build כדי ליצור את קובץ האימג' של הקונטיינר.
שימוש ב-Docker ליצירת האימג'
יוצרים Dockerfile. משתמשים בהוראה
FROMכדי לציין קובץ אימג' בסיסי עם תמיכה במספר ארכיטקטורות.FROM apache/beam_python3.10_sdk:2.50.0 # Make your customizations here, for example: ENV FOO=/bar COPY path/to/myfile ./מתקינים את הכלי Buildx. כדי לבדוק אם הכלי מותקן, מריצים את הפקודה הבאה:
docker buildx versionמריצים את הפקודה הבאה כדי ליצור מכונה ליצירת תמונות שמשתמשת במנהל ההתקן
docker-container. הדרייבר הזה נדרש כדי ליצור תמונות מרובות ארכיטקטורות.docker buildx create --driver=docker-container --useהדגל
--useמגדיר את מופע ה-Builder החדש כ-Builder הנוכחי.מריצים את הפקודה הבאה כדי להגדיר את Docker לאימות בקשות ל-Artifact Registry.
gcloud auth configure-docker REGION-docker.pkg.devמחליפים את REGION באזור של מאגר Artifact Registry.
מריצים את הפקודה הבאה כדי ליצור את קובץ האימג' של הקונטיינר ולהעביר אותו בדחיפה אל Artifact Registry:
docker buildx build \ --platform=linux/amd64,linux/arm64 \ -t REGISTRY/IMAGE:TAG \ --push .מחליפים את מה שכתוב בשדות הבאים:
- REGISTRY: מאגר Docker
- IMAGE: שם התמונה
- TAG: תג התמונה
שימוש ב-Cloud Build כדי ליצור את קובץ האימג'
יוצרים Dockerfile. משתמשים בהוראה
FROMכדי לציין קובץ אימג' בסיסי עם תמיכה במספר ארכיטקטורות.FROM apache/beam_python3.10_sdk:2.50.0 # Make your customizations here, for example: ENV FOO=/bar COPY path/to/myfile ./באותה ספרייה שבה נמצא קובץ ה-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: תג התמונה
כדי ליצור את קובץ האימג' ולדחוף אותו, מריצים את הפקודה
gcloud builds submit:gcloud builds submit --region=REGION --config docker_buildx.yamlמחליפים את REGION באזור של שירות Cloud Build שבו רוצים להשתמש.
מידע נוסף זמין במאמר יצירה והעברה בדחיפה של קובץ אימג' של Docker באמצעות Cloud Build.
אימות קובץ אימג' של קונטיינר
פותחים את הדף Repositories במסוף Google Cloud .
לוחצים על המאגר עם קובץ אימג' של קונטיינר.
לוחצים על התמונה כדי לראות את הגרסאות שלה.
לוחצים על גרסה.
לוחצים על Manifest.
בקובץ המניפסט, בקטע
platformצריכים להיות רשומים הערכיםarm64ו-amd64. לדוגמה:{ "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" } } ] }