במאמר הזה מוסברים מושגים מרכזיים שקשורים לקובצי אימג' של קונטיינרים, כולל רשומות, מאגרי מידע וארטיפקטים. בנוסף, יש במאמר מידע בסיסי על האופן שבו המושגים האלה רלוונטיים ל-Artifact Registry ול-Container Registry.
הדוגמאות ל-Artifact Registry בדף הזה מתייחסות בעיקר למאגרי gcr.io ולמאגרים בפורמט Docker. מידע נוסף זמין במאמרים פורמטים נתמכים וסקירה כללית על המאגר.
מרשמים
מאגר הוא מקום לאחסון ולהפצה של קובצי אימג' של קונטיינרים וארטיפקטים, שמסודרים לפי שם במאגרים. מאגר יכול להכיל מאגר יחיד או כמה מאגרים, והוא יכול להיות ציבורי או פרטי.
שירותי רישום כמו Docker Hub ו-Artifact Registry מספקים אפשרויות ליצירת מאגרי מידע ציבוריים או פרטיים. כשמושכים תמונות ציבוריות, חשוב להבין את בעיות האבטחה האפשריות. במאמר בנושא ניהול תלות אפשר לקרוא מידע נוסף על מעקב אחרי פגיעויות ועל צמצום טביעת הרגל של התלות.
מאגרי רישום מאורגנים במאגרים שבהם מאוחסנים קובצי תמונות של קונטיינרים. ב-Artifact Registry אפשר ליצור כמה מאגרי מידע בפרויקט אחד ולשייך לכל מאגר מידע מיקום אזורי או מיקום שכולל מספר אזורים. יכול להיות שמאגרים קשורים יקובצו לפי תוויות.מאגרי Artifact Registry וניהול תמונות
במאגרי Artifact Registry בפורמט Docker, אפשר לאחסן כמה תמונות של קונטיינרים עם שמות שונים באותו מאגר. כל גרסה של תמונה מזוהה על ידי התקציר שלה, ואפשר לשייך לה תג. תגים יכולים להיות ניתנים לשינוי או לא ניתנים לשינוי. מידע נוסף על גרסאות ותגים של קובצי אימג' של קונטיינרים זמין במאמר גרסאות של קובצי אימג' של קונטיינרים.
בדרך כלל, Artifact Registry מתייחס לחלקים מהנתיב לתמונה כדי לזהות את הפרויקט, המיקום האזורי או הרב-אזורי ושם התמונה, יחד עם התג או התקציר של המניפסט, כדי לזהות את הגרסה הנכונה.לדוגמה:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
-
us-west1הוא המיקום של המאגר -
docker.pkg.devהוא שם המארח של מאגרים בפורמט Docker. -
PROJECTהוא מרחב השמות שנוצר על ידיGoogle Cloud מזהה הפרויקט. -
quickstart-docker-repoהוא מרחב השמות בפרויקט שבו מאחסנים תמונות. ב-Artifact Registry, החלק הזה של הנתיב נקרא repository (מאגר). -
quickstart-imageהוא השם של כל הגרסאות שלquickstart-image, ולרוב מתייחסים אליו כתמונה. -
tag1הוא התג שמציין את גרסת התמונה.
תמונות
אפשר לאחסן ב-Artifact Registry גם ארטיפקטים וגם תמונות. ארטיפקט יכול להיות כל דבר: קובץ טקסט, קובץ אימג' של Docker או תרשים Helm, בעוד שתמונה בדרך כלל מתייחסת לקובץ אימג' של קונטיינר. קובצי אימג' של קונטיינרים הם חבילות של תוכנה שמכילות את כל האלמנטים הדרושים להפעלה בכל סביבה. מידע נוסף זמין במאמר מהם מאגרי תגים.
התמונות מועברות או מועלות למאגרים ונשלפות או מורדות מהמאגרים. כדי לציין את התמונה והגרסה הנכונות, צריך לציין את המאגר הייחודי ואת פריט המידע שנוצר בתהליך פיתוח (Artifact).
מידע נוסף על שמות של מאגרים ותמונות ב-Artifact Registry זמין במאמר שמות של מאגרים ותמונות.
שכבות
תמונות של קונטיינרים שמאוחסנות במאגרים בנויות באופן מצטבר באמצעות שכבות. אפשר להשתמש בחלק מהשכבות בתמונות שונות. השכבות מוגדרות בדרכים שונות בהתאם לסוג התמונה. לדוגמה, כל הוראה בקובץ Dockerfile מתאימה לשכבה בקובץ אימג' של Docker. בתוך מאגר, תמונות עם שכבות משותפות חולקות את השכבות האלה, וכך משפרות את יעילות האחסון. מטעמי אבטחה, השכבות לא משותפות בין רישומים שונים.
כשמוחקים קובץ אימג' של קונטיינר, השכבות לא נמחקות באופן מיידי. שכבות שלא מוזכרות באף תמונה במאגר נמחקות מדי יום.
תגים
משתמשים מוסיפים תגים כשהם דוחפים או מושכים תמונה למאגר כדי לציין את הגרסה של התמונה. לתמונה יכול להיות תג אחד או יותר, או ללא תגים בכלל. אם אתם משתמשים בתגים שניתנים לשינוי, ואתם מעלים תמונה פעמיים עם אותו תג, התג יוסר מהתמונה הראשונה ויועבר לתמונה השנייה, כך שהתמונה הראשונה תישאר ללא תג. עדיין אפשר לגשת לתמונה שלא תויגה באמצעות תקצירי המניפסט שלה.
אם אתם משתמשים בתגים שלא ניתן לשנות, אסור לבצע את הפעולות הבאות:
- מחיקת תמונה מתויגת. עדיין מותר למחוק תמונות שלא תויגו.
- הסרת תג מתמונה.
- העלאת תמונה עם תג שכבר נמצא בשימוש בגרסה אחרת של התמונה במאגר.
התג latest הוא תג מיוחד שמצורף כשדוחפים תמונות בלי תג.
לדוגמה:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
התמונה נשלחת אל hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
מושך את התמונה hello-app:latest.
חשוב לציין שכשתמונה נדחפת למאגר עם תג שאינו latest, התג latest לא מתווסף, ולכן יכול להיות שהתמונה latest לא תכלול את השינויים העדכניים ביותר. מומלץ להשתמש בתגים אחרים מלבד latest לגרסאות.
מניפסטים
מניפסטים של תמונות מזהים ומציינים באופן ייחודי את השכבות בכל תמונה. מניפסטים מזוהים באמצעות גיבובים ייחודיים מסוג SHA-256 שנקראים תקצירי מניפסט. תקצירי מניפסט אמינים ומאובטחים יותר מתגים, כי במאגרי תגים שניתנים לשינוי, אפשר להעלות כמה גרסאות של אותה תמונה לאותו תג, כך שחלק מהתמונות לא מקבלות תגים, בעוד שכל תמונה מצוינת באופן ייחודי על ידי תקציר המניפסט שלה.
אם משתמשים בכלים לסריקה או לניתוח של תמונות, התוצאות של הכלים האלה תקפות רק לגבי התמונה שנסרקה. כדי לוודא שאתם פורסים את התמונה שנסרקה, אתם לא יכולים להסתמך על התג כי התמונה שאליה מתייחס התג עשויה להשתנות.
מידע נוסף על תיוג ומניפסטים ספציפיים של Artifact Registry זמין במאמרים ניהול תמונות ושימוש בתמונות של קונטיינרים.
חימום מראש של תמונות
באפליקציות שרגישות לזמן האחזור ומשתמשות בהזרמת תמונות, המתנה לשליפת תמונה בפעם הראשונה בצומת או במופע חדשים, שלרוב נקראת 'הפעלה במצב התחלתי (cold start)', עלולה לגרום לעיכובים לא רצויים. חימום מראש מאפשר להתחיל באופן מפורש את ההורדה של תמונות למטמון של הזרמת תמונות לפני שהן נדרשות. התהליך הזה עוזר לוודא שהתמונה זמינה למסירה מהירה כשמתקבלת בקשה מאשכול GKE.
כדי לבצע חימום מראש של תמונות, משתמשים ב-Artifact Registry API. הוראות מפורטות מופיעות במאמר איך מקטינים את זמן האחזור באמצעות חימום מראש של תמונות.
המאמרים הבאים
- מדריך למתחילים בנושא Docker
- עבודה עם תמונות קונטיינרים
- המדריך למתחילים של Helm
- עבודה עם תרשימי Helm
- אפשר לקרוא על DevOps ולעיין בתוכנית המחקר של DORA.