בדף הזה מתוארים תקצירי תמונות, כולל מהם תקצירי תמונות, איך למצוא אותם ואיך לאכוף את השימוש בהם באשכולות Kubernetes. הדף הזה מיועד למפתחים ולמפעילים שיוצרים ופורסים תמונות של קונטיינרים.
תקציר של קובץ אימג' של קונטיינר מזהה באופן ייחודי ובלתי ניתן לשינוי קובץ אימג' של קונטיינר. כשפורסים תמונות באמצעות digest, נמנעים מהחסרונות של פריסה באמצעות תגי תמונה.
הפקודות בדף הזה מניחות שיש לכם גישה לסביבת מעטפת של Linux או macOS עם כלים כמו Google Cloud CLI, Docker, cURL, jq ו-pack שכבר מותקנים. אפשר גם להשתמש ב-Cloud Shell, שבו הכלים האלה מותקנים מראש.
קובצי אימג' של קונטיינרים ותגי אימג'
כשעובדים עם קובצי אימג' בקונטיינרים, צריך דרך להתייחס לקובצי האימג' שבהם משתמשים.
תגי תמונה
הם דרך נפוצה להתייחס לגרסאות שונות של תמונה. גישה נפוצה היא לתייג תמונות עם מזהה גרסה בזמן ה-build. לדוגמה, v1.0.1 יכול להתייחס לגרסה שאתם קוראים לה 1.0.1.
התגים מאפשרים לחפש בקלות גרסאות של תמונות באמצעות מחרוזות שקריאות לאנשים. עם זאת, תגים הם הפניות שניתנות לשינוי, כלומר התמונה שאליה מתבצעת ההפניה באמצעות תג יכולה להשתנות, כפי שמוצג בתרשים הבא:
כפי שרואים בתרשים הקודם, אם מפרסמים תמונה חדשה באמצעות אותו תג כמו תמונה קיימת, התג מפסיק להצביע על התמונה הקיימת ומתחיל להצביע על התמונה החדשה.
חסרונות של תגי תמונות
מכיוון שאפשר לשנות תגים, יש להם את החסרונות הבאים כשמשתמשים בהם כדי לפרוס תמונה:
ב-Kubernetes, פריסה לפי תג עלולה להוביל לתוצאות לא צפויות. לדוגמה, נניח שיש לכם משאב Deployment קיים שמפנה לקובץ אימג' של קונטיינר באמצעות התג
v1.0.1. כדי לתקן באג או לבצע שינוי קטן, תהליך build יוצר תמונה חדשה עם אותו תגv1.0.1. יכול להיות שפודים חדשים שנוצרו ממקור הפריסה ישתמשו בתמונה הישנה או בתמונה החדשה, גם אם לא תשנו את המפרט של מקור הפריסה. הבעיה הזו רלוונטית גם למשאבי Kubernetes אחרים, כמו StatefulSets, DaemonSets, ReplicaSets ו-Jobs.אם משתמשים בכלים לסריקה או לניתוח של תמונות, התוצאות של הכלים האלה תקפות רק לגבי התמונה שנסרקה. כדי לוודא שאתם פורסים את התמונה שנסרקה, אתם לא יכולים להסתמך על התג כי יכול להיות שהתמונה שאליה מתייחס התג השתנתה.
אם אתם משתמשים ב-Binary Authorization עם Google Kubernetes Engine (GKE), אי אפשר להשתמש בפריסה מבוססת-תגים כי אי אפשר לקבוע את התמונה המדויקת שמשמשת ליצירת Pod.
כשפורסים את התמונות, אפשר להשתמש בסיכום תמונה כדי להימנע מהחסרונות של השימוש בתגים. עדיין אפשר להוסיף תגים לתמונות, אבל זה לא חובה.
מבנה התמונה
תמונה מורכבת מהרכיבים הבאים:
- מניפסט תמונה
- אובייקט הגדרה
- מערך של שכבה אחת או יותר של מערכת קבצים
- אינדקס תמונות (אופציונלי)
הרכיבים האלה מופיעים בתרשים הבא:
בתמונה שלמעלה אפשר לראות פרטים נוספים על רכיבי תמונה:
- מניפסט התמונה הוא מסמך JSON שמכיל הפניה לאובייקט ההגדרה, לשכבות של מערכת הקבצים ולמטא-נתונים אופציונליים.
- מניפסט התמונה מפנה לאובייקט ההגדרה ולכל אחת משכבות מערכת הקבצים באמצעות מאפייני ה-
digestשלהן. הערך של המאפייןdigestהוא גיבוב קריפטוגרפי של התוכן שאליו מתייחסת התמצית. בדרך כלל הגיבוב מחושב באמצעות האלגוריתם SHA-256. - ערכי התקציר משמשים ליצירת כתובות קבועות לאובייקטים. התהליך הזה נקרא אחסון עם כתובות תוכן, והוא מאפשר לאחזר מניפסטים של תמונות, אינדקסים של תמונות, אובייקטים של הגדרות ושכבות על סמך הגיבובים שלהם.
- תקציר התמונה הוא הגיבוב של אינדקס התמונה או של מסמך ה-JSON של מניפסט התמונה.
- אובייקט ההגדרה הוא מסמך JSON שמגדיר מאפיינים של התמונה, כמו ארכיטקטורת ה-CPU, נקודת הכניסה, הפורטים החשופים ומשתני הסביבה.
- מערך השכבות של מערכת הקבצים מגדיר את הסדר שבו זמן הריצה של הקונטיינר משתמש כדי להוסיף את השכבות. השכבות מופצות כקבצי tar, בדרך כלל דחוסים באמצעות כלי השירות
gzip. - אינדקס התמונות האופציונלי, שלפעמים נקרא רשימת המניפסטים, מתייחס למניפסט תמונה אחד או יותר. ההפניה היא הגיבוב של מניפסט התמונה. אינדקס תמונות שימושי כשיוצרים כמה תמונות קשורות לפלטפורמות שונות, כמו ארכיטקטורות
amd64ו-arm64.
מידע נוסף זמין בקטע בדיקת מניפסטים, תמציות ותגים של תמונות.
חיפוש סיכומים של תמונות
כדי להשתמש בתקצירים של תמונות לפריסה, קודם צריך למצוא את התקציר. אחר כך תוכלו להשתמש בערך הגיבוב בפקודת הפריסה או לכלול אותו במניפסטים של Kubernetes.
יש כמה דרכים לקבל את התקציר של תמונה, בהתאם למצב הנוכחי. בקטעים הבאים יש דוגמאות למוצרים ולכלים שונים.
בקטעים הבאים, מריצים את הפקודות ב-Cloud Shell או בסביבת מעטפת עם כלים כמו ה-CLI של gcloud, Docker, cURL ו-jq שכבר מותקנים.
Artifact Registry
לתמונות שמאוחסנות ב-Artifact Registry, אפשר להשתמש בפקודה
gcloud artifacts docker images describe.gcloud artifacts docker images describe \ LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG \ --format 'value(image_summary.digest)'מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום האזורי או הרב-אזורי של המאגר -
PROJECT: מזהה הפרויקטGoogle Cloud -
REPOSITORY: שם המאגר -
IMAGE: שם התמונה -
TAG: תג התמונה
-
Container Registry
כדי לקבל את ה-digest של תמונה שמאוחסנת ב-Container Registry, אפשר להשתמש בפקודה
gcloud container images describeולציין את השם והתג. משתמשים בדגל--formatכדי להציג רק את התקציר:gcloud container images describe \ gcr.io/google-containers/pause-amd64:3.2 \ --format 'value(image_summary.digest)'הפלט אמור להיראות כך, אבל יכול להיות שערך ה-digest יהיה שונה:
sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108
Cloud Build
כדי לקבל את ה-digest של קובץ אימג' שנוצר באמצעות Cloud Build, משתמשים בפקודה gcloud builds describe עם הדגל --format. הגישה הזו פועלת ללא קשר למאגר התמונות שבו השתמשתם כדי לפרסם את התמונה.
אם הבנייה כבר הסתיימה, מבצעים את הפעולות הבאות:
כדי לקבל רשימה של גרסאות Build לפרויקט:
gcloud builds listרשום הערה לגבי
BUILD_ID.קבלת תקציר התמונה:
gcloud builds describe BUILD_ID \ --format 'value(results.images[0].digest)'מחליפים את
BUILD_IDבמזהה הייחודי ש-Cloud Build הקצה ל-build.
כדי לקבל את שם התמונה ואת ה-digest של הגרסה העדכנית ביותר מ-Cloud Build לפרויקט הנוכחי:
gcloud builds describe \ $(gcloud builds list --limit 1 --format 'value(id)') \ --format 'value[separator="@"](results.images[0].name,results.images[0].digest)'אם ה-build יצר כמה תמונות, מסננים את הפלט ומקבלים את ה-digest של אחת מהתמונות:
gcloud builds describe BUILD_ID --format json \ | jq -r '.results.images[] | select(.name=="YOUR_IMAGE_NAME") | .digest'מחליפים את
YOUR_IMAGE_NAMEבשם של אחת התמונות מקובץcloudbuild.yaml.אם שולחים build ל-Cloud Build באמצעות הפקודה
gcloud builds submit, אפשר לתעד את ה-digest של קובץ האימג' מהפלט במשתנה סביבה:IMAGE_DIGEST=$(gcloud builds submit \ --format 'value(results.images[0].digest)' | tail -n1)
Cloud Native Buildpacks
אם אתם משתמשים ב-Cloud Native Buildpacks וב- Google Cloud builder כדי ליצור ולפרסם תמונות, אתם יכולים לתעד את שם התמונה ואת ה-digest שלה באמצעות הדגל
--quietעם הפקודהpack:pack build --builder gcr.io/buildpacks/builder:v1 --publish --quiet \ LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE \ > image-with-digest.txtמחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום האזורי או הרב-אזורי של המאגר -
PROJECT_ID: מזהה הפרויקטGoogle Cloud -
REPOSITORY: שם המאגר -
IMAGE: שם התמונה
הקובץ
image-with-digest.txtמכיל את שם התמונה ואת ה-digest שלה.אם רוצים להוסיף תגים לתמונה, משתמשים בדגל
--tag.-
לקוח Docker
פקודת המשנה
manifestשל לקוח שורת הפקודהdockerיכולה לאחזר מניפסטים של קובצי אימג' של קונטיינרים ורשימות מניפסטים ממאגרי קובצי אימג' של קונטיינרים.מקבלים את ה-digest מרשימת המניפסט של התמונה
registry.k8s.io/pause:3.9, עבור ארכיטקטורת ה-CPUamd64ומערכת ההפעלהlinux:docker manifest inspect --verbose registry.k8s.io/pause:3.9 | \ jq -r 'if type=="object" then .Descriptor.digest else .[] | select(.Descriptor.platform.architecture=="amd64" and .Descriptor.platform.os=="linux") | .Descriptor.digest end'הפלט אמור להיראות כך:
sha256:8d4106c88ec0bd28001e34c975d65175d994072d65341f62a8ab0754b0fafe10אם יש לכם תמונות שמאוחסנות בדמון Docker המקומי, ושנמשכו ממאגר תמונות או נדחפו אליו, אתם יכולים להשתמש בכלי שורת הפקודה של Docker כדי לקבל את ה-digest של התמונה:
מושכים את האימג' אל הדימון (daemon) של Docker המקומי:
docker pull docker.io/library/debian:bookwormקבלת תקציר התמונה:
docker inspect docker.io/library/debian:bookworm \ | jq -r '.[0].RepoDigests[0]' \ | cut -d'@' -f2הפלט אמור להיראות כך, אבל יכול להיות שערך התקציר יהיה שונה:
sha256:3d868b5eb908155f3784317b3dda2941df87bbbbaa4608f84881de66d9bb297b
כדי לראות רשימה של כל התמונות והתקצירים ב-Docker daemon המקומי:
docker images --digestsבפלט מוצגים תקצירים של תמונות שיש להן ערך תקציר. לתמונות יש ערך גיבוב רק אם הן נמשכו ממאגר תמונות או נדחפו אליו.
crane וגם gcrane
אפשר להשתמש בכלי שורת הפקודה crane ו-gcrane בקוד פתוח כדי לקבל את ה-digest של אימג' בלי למשוך את האימג' לדמון Docker מקומי.
מורידים את
craneואתgcraneלספרייה הנוכחית:VERSION=$(curl -sL https://api.github.com/repos/google/go-containerregistry/releases/latest | jq -r .tag_name) curl -L "https://github.com/google/go-containerregistry/releases/download/${VERSION}/go-containerregistry_$(uname -s)_$(uname -m).tar.gz" | tar -zxf - crane gcraneלקבלת סיכום של תמונות:
./gcrane digest gcr.io/distroless/static-debian11:nonrootcraneוגםgcraneכוללים תכונות נוספות שלא מפורטות בדף הזה. מידע נוסף זמין במאמרי העזרה בנושאcraneו-gcrane.
אכיפת השימוש ב-digests של תמונות בפריסות של Kubernetes
אם רוצים לאכוף שימוש בערכי גיבוב (digest) לתמונות שמבצעים להן פריסה באשכולות Kubernetes, אפשר להשתמש ב-Policy Controller או ב-Open Policy Agent (OPA) Gatekeeper. Policy Controller מבוסס על פרויקט הקוד הפתוח OPA Gatekeeper.
Policy Controller ו-OPA Gatekeeper מבוססים על מנוע המדיניות של OPA. Policy Controller ו-OPA Gatekeeper מספקים Kubernetes validating admission webhook לאכיפת מדיניות, וcustom resource definitions (CRD) לconstraint templates וconstraints.
תבניות אילוצים מכילות לוגיקה של מדיניות שמוצגת באמצעות שפה הצהרתית ברמה גבוהה שנקראת Rego. זוהי תבנית אילוצים שמאמתת שקונטיינרים, קונטיינרים של init וקונטיינרים זמניים במפרט של משאב Kubernetes משתמשים בתמונות עם ערכי גיבוב:
המדיניות שלמעלה מכילה ביטוי רגולרי כקלט לפונקציה re_match.
הביטוי הרגולרי הזה תואם ל-digest של קובץ האימג' של הקונטיינר, והוא מבוסס על פורמט ה-digest במפרט האימג' של Open Container Initiative.
האילוצים מחילים את המדיניות על משאבי Kubernetes על ידי התאמה למאפיינים כמו kind ו-namespace. האילוץ הבא לדוגמה מחיל את המדיניות מתבנית האילוץ על כל המשאבים מסוג Pod במרחב השמות default.
אחרי שיוצרים את תבנית האילוץ ואת האילוץ, כל הפודים החדשים במרחב השמות default חייבים להשתמש בערכי הגיבוב של התמונות כדי להפנות לתמונות של קונטיינרים.
דוגמה מלאה מופיעה במדיניות imagedigests בספריית המדיניות של Gatekeeper.
מידע על מניפסטים, תקצירים ותגים של תמונות
בקטע הזה מוסבר איך לחפש תמונות קיימות במאגרי תמונות באמצעות כלי שורת פקודה כמו curl ו-docker. מריצים את הפקודות ב-Cloud Shell או בסביבת מעטפת עם כלים כמו ה-CLI של gcloud, Docker, cURL ו-jq שכבר מותקנים. הפקודות הבאות משתמשות בתמונות ציבוריות ב-Artifact Registry.
אפשר לקבל את המניפסט של התמונה
gcr.io/google-containers/pause-amd64:3.2באמצעות cURL וכתובת ה-URL של המניפסט:curl -s https://gcr.io/v2/google-containers/pause-amd64/manifests/3.2הפלט אמור להיראות כך:
{ "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 759, "digest": "sha256:80d28bedfe5dec59da9ebf8e6260224ac9008ab5c11dbbe16ee3ba3e4439ac2c" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 296534, "digest": "sha256:c74f8866df097496217c9f15efe8f8d3db05d19d678a02d01cc7eaed520bb136" } ] }בקטע
configיש מאפיין digest, ואפשר להשתמש בערך הזה כדי לאחזר את אובייקט ההגדרה. באופן דומה, לכל שכבה יש מאפייןdigestשבו אפשר להשתמש כדי לאחזר את קובץ ה-tar של השכבה.אם התמונה כוללת את אינדקס התמונות האופציונלי, בקשת HTTP
GETלכתובת ה-URL של המניפסט באמצעות תג מחזירה את אינדקס התמונות במקום את מניפסט התמונה.קבלת אינדקס התמונה של התמונה
gcr.io/google-containers/pause:3.2:curl -s https://gcr.io/v2/google-containers/pause/manifests/3.2הפלט אמור להיראות כך:
{ "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", "manifests": [ { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108", "platform": { "architecture": "amd64", "os": "linux" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:bbb7780ca6592cfc98e601f2a5e94bbf748a232f9116518643905aa30fc01642", "platform": { "architecture": "arm", "os": "linux", "variant": "v7" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:31d3efd12022ffeffb3146bc10ae8beb890c80ed2f07363515580add7ed47636", "platform": { "architecture": "arm64", "os": "linux" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:7f82fecd72730a6aeb70713476fb6f7545ed1bbf32cadd7414a77d25e235aaca", "platform": { "architecture": "ppc64le", "os": "linux" } }, { "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "size": 526, "digest": "sha256:1175fd4d728641115e2802be80abab108b8d9306442ce35425a4e8707ca60521", "platform": { "architecture": "s390x", "os": "linux" } } ] }מסננים את התוצאה כדי לחלץ את התקציר של התמונה עבור הפלטפורמה הרצויה. מקבלים את התקציר של מניפסט התמונה עבור
amd64ארכיטקטורת המעבד ומערכת ההפעלהlinux:curl -s https://gcr.io/v2/google-containers/pause/manifests/3.2 | \ jq -r '.manifests[] | select(.platform.architecture=="amd64" and .platform.os=="linux") | .digest'הסינון בפקודה הזו מחקה את האופן שבו סביבות זמן ריצה של קונטיינרים, כמו containerd, בוחרות את התמונה שתואמת לפלטפורמת היעד מאינדקס התמונות.
הפלט אמור להיראות כך:
sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108תקציר התמונה הוא התוצאה של הפעלת גיבוב עמיד בפני התנגשויות על אינדקס התמונה או על מניפסט התמונה, בדרך כלל אלגוריתם SHA-256.
קבלת התקציר של התמונה
gcr.io/google-containers/pause-amd64:3.2:curl -s https://gcr.io/v2/google-containers/pause-amd64/manifests/3.2 \ | shasum -a 256 \ | cut -d' ' -f1הפלט אמור להיראות כך:
4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108אפשר להפנות לתמונה הזו באמצעות ערך ה-digest של התמונה באופן הבא:
gcr.io/google-containers/pause-amd64@sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108בעזרת הקונספט של אחסון עם כתובות תוכן, מקבלים את מניפסט התמונה באמצעות ה-digest כהפניה:
curl -s https://gcr.io/v2/google-containers/pause-amd64/manifests/sha256:4a1c4b21597c1b4415bdbecb28a3296c6b5e23ca4f9feeb599860a1dac6a0108הרבה מאגרי קובצי אימג' של קונטיינרים מחזירים את הגיבוב של מניפסטים, אינדקסים של קובצי אימג', אובייקטים של הגדרות ושכבות של מערכת קבצים בכותרת
Docker-Content-Digestבתגובה לבקשות HTTPHEAD. קבלת התקציר של אינדקס התמונות של התמונהgcr.io/google-containers/pause-amd64:3.2:curl -s --head https://gcr.io/v2/google-containers/pause/manifests/3.2 \ | grep -i Docker-Content-Digest \ | cut -d' ' -f2הפלט אמור להיראות כך:
sha256:927d98197ec1141a368550822d18fa1c60bdae27b78b0c004f705f548c07814fהכותרת
Docker-Content-Digestלא נדרשת לפי מפרטי ההפצה של Open Container Initiative, ולכן יכול להיות שהשיטה הזו לא תפעל עם כל רשומות קובצי אימג' של קונטיינר. אפשר להשתמש בו עם Artifact Registry ועם Container Registry.כדי לאחזר אובייקט תצורה של תמונה באמצעות ערך ה-digest ממניפסט התמונה:
אחזור תקציר ההגדרה:
CONFIG_DIGEST=$(curl -s https://gcr.io/v2/google-containers/pause-amd64/manifests/3.2 \ | jq -r '.config.digest')משתמשים בסיכום ההגדרות כדי לאחזר את אובייקט ההגדרות, ומשתמשים ב-
jqכדי לעצב את הפלט כך שיהיה קל יותר לקרוא אותו:curl -sL https://gcr.io/v2/google-containers/pause-amd64/blobs/$CONFIG_DIGEST \ | jqהפלט אמור להיראות כך:
{ "architecture": "amd64", "config": { "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Entrypoint": [ "/pause" ], "WorkingDir": "/", "OnBuild": null }, "created": "2020-02-14T10:51:50.60182885-08:00", "history": [ { "created": "2020-02-14T10:51:50.60182885-08:00", "created_by": "ARG ARCH", "comment": "buildkit.dockerfile.v0", "empty_layer": true }, { "created": "2020-02-14T10:51:50.60182885-08:00", "created_by": "ADD bin/pause-amd64 /pause # buildkit", "comment": "buildkit.dockerfile.v0" }, { "created": "2020-02-14T10:51:50.60182885-08:00", "created_by": "ENTRYPOINT [\"/pause\"]", "comment": "buildkit.dockerfile.v0", "empty_layer": true } ], "os": "linux", "rootfs": { "type": "layers", "diff_ids": [ "sha256:ba0dae6243cc9fa2890df40a625721fdbea5c94ca6da897acdd814d710149770" ] } }
כדי לאחזר שכבות של מערכת קבצים באמצעות ערכי גיבוב ממניפסט התמונה:
מקבלים את התקציר של השכבה שרוצים לאחזר:
LAYER_DIGEST=$(curl -s https://gcr.io/v2/google-containers/pause-amd64/manifests/3.2 \ | jq -r '.layers[0].digest')משתמשים בסיכום השכבה כדי לאחזר את קובץ ה-tar של השכבה, ומציגים את התוכן:
curl -sL https://gcr.io/v2/google-containers/pause-amd64/blobs/$LAYER_DIGEST \ | tar --listבשכבה הזו יש רק קובץ אחד בשם
pause.
כדי לחפש תגים שמשויכים לסיכום תמונות:
מגדירים את התקציר שרוצים לחפש:
IMAGE_DIGEST=$(curl -s https://gcr.io/v2/google-containers/pause-amd64/manifests/3.2 \ | shasum -a 256 \ | cut -d' ' -f1)משתנה הסביבה
IMAGE_DIGESTמכיל את ה-digest של התמונה שאליה מתייחס התג3.2.משתמשים בנקודת הקצה של רשימת תגי תמונות,
/tags/list, כדי לראות את פרטי התגים ולחלץ את התגים של ערך הגיבוב:curl -s "https://gcr.io/v2/google-containers/pause-amd64/tags/list?n=1" \ | jq ".manifest.\"sha256:$IMAGE_DIGEST\".tag"הפלט אמור להיראות כך:
[ "3.2" ]
כדי לקבל את קובץ המניפסט של קובץ אימג' של קונטיינר ממאגר תמונות קונטיינר ב-Artifact Registry באמצעות cURL, צריך לכלול אסימון גישה בכותרת הבקשה
Authorization:curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://LOCATION-docker.pkg.dev/v2/PROJECT_ID/REPOSITORY/IMAGE/manifests/DIGESTמחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום האזורי או הרב-אזורי של המאגר -
PROJECT_ID: מזהה הפרויקטGoogle Cloud -
REPOSITORY: שם המאגר -
IMAGE: שם התמונה -
DIGEST: תקציר התמונה בפורמטsha256:DIGEST_VALUE
-
המאמרים הבאים
- מידע נוסף על תמונות זמין במפרטים של Open Container Initiative בנושא פורמט תמונה והפצה.