בדף הזה מוסבר מהם תקצירי תמונות, איך מוצאים אותם ואיך אוכפים את השימוש בהם באשכולות Kubernetes. הדף הזה מיועד למפתחים ולמפעילים שיוצרים ופורסים תמונות של קונטיינרים.
תקציר של קובץ אימג' של קונטיינר מזהה באופן ייחודי ובלתי ניתן לשינוי קובץ אימג' של קונטיינר. כשפורסים תמונות באמצעות digest, נמנעים מהחסרונות של פריסה באמצעות תגי תמונה.
הפקודות בדף הזה מניחות שיש לכם גישה לסביבת מעטפת של Linux או macOS עם כלים כמו Google Cloud CLI, Docker, cURL, jq ו-pack שכבר מותקנים. אפשר גם להשתמש ב-Cloud Shell, שבו הכלים האלה מותקנים מראש.
קובצי אימג' של קונטיינרים ותגי אימג'
כשעובדים עם קובצי אימג' בקונטיינרים, צריך דרך להפנות לקובצי האימג' שבהם משתמשים.
תגי תמונה
הם דרך נפוצה להתייחס לגרסאות שונות של תמונה. גישה נפוצה היא לתייג תמונות עם מזהה גרסה בזמן הבנייה. לדוגמה, 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 שכבר הושלם:
כדי לקבל רשימה של גרסאות 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)'אם יצרתם כמה תמונות, מסננים את הפלט ומקבלים את ה-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, עבור ארכיטקטורת המעבדamd64ומערכת ההפעלה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 כדי לקבל את הגיבוב של התמונה:
מושכים את קובץ האימג' אל הדמון של Docker במחשב המקומי:
docker pull docker.io/library/debian:bookwormקבלת תקציר התמונה:
docker inspect docker.io/library/debian:bookworm \ | jq -r '.[0].RepoDigests[0]' \ | cut -d'@' -f2הפלט אמור להיראות כך, אבל יכול להיות שערך ה-digest יהיה שונה:
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.
אכיפת השימוש בערכי גיבוב (digest) של תמונות בפריסות של 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.כדי לראות את רשימת התגים ולחלץ את התגים של ערך ה-digest, משתמשים בנקודת הקצה של רשימת תגי התמונות,
/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, צריך לכלול אסימון גישה ב-request header
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 בנושא פורמט תמונה והפצה.