קובץ האימג' של Docker של Google Cloud CLI מאפשר לשלוף גרסה ספציפית של ה-CLI של gcloud כקובץ אימג' של Docker מ-Artifact Registry, ולהריץ במהירות פקודות של Google Cloud CLI בקונטיינר מבודד שמוגדר כראוי.
תמונת ה-Docker של Google Cloud CLI היא ה-CLI של gcloud שמותקן על גבי תמונת Debian או Alpine. תמונות ה-Docker של Google Cloud CLI מאפשרות להשתמש ב-gcloud וברכיבים שמצורפים אליו בלי להתקין את gcloud באופן ידני במחשב המקומי.
אפשרויות קובץ אימג' של Docker
יש שש תמונות Docker של Google Cloud CLI, ובכולן מותקנים כלי שורת הפקודה gcloud, gsutil ו-bq. מומלץ להתקין את תמונת :stable לסביבה מינימלית. אפשר גם להשתמש בתמונה היציבה כתמונת הבסיס לפריסות שלכם. כך תוכלו להתקין בתמונה רק את הרכיבים והחבילות שאתם צריכים:
-
:stable,:VERSION-stable: מספקת התקנה של gcloud עם רכיביgsutilו-bq. התמונה מבוססת על תמונת הבסיס העדכנית של Debian 12 שמסופקת על ידי Google. התמונה הזו תומכת בפלטפורמותlinux/amdו-linux/arm. כדי להתקין גרסאות ספציפיות של gcloud, משתמשים בתג:VERSION-stable.
אם רוצים להשתמש בתמונה שמבוססת על Alpine, אפשר להתקין את התמונה הבאה:
-
:alpine,:VERSION-alpine: דומה לגרסה היציבה, אבל מבוססת על תמונת הבסיס העדכנית ביותר של Alpine 3.20. התמונה הזו תומכת בפלטפורמותlinux/amdו-linux/arm. כדי להתקין גרסאות ספציפיות של gcloud, משתמשים בתג:VERSION-alpine.
אם אתם רוצים תמונות עם רכיבים או חבילות נוספים שמותקנים מראש, אתם יכולים להתקין אחת מהאפשרויות הבאות:
:emulators,:VERSION-emulators: דומה לגרסה היציבה, אבל כוללת את כל רכיבי האמולטור. התמונה מבוססת על תמונת הבסיס העדכנית ביותר של Debian 12 שמסופקת על ידי Google, ומשתמשת במנהל הרכיבים כדי להתקין את הרכיבים. התמונה הזו תומכת בפלטפורמותlinux/amdו-linux/arm. כדי להתקין גרסאות ספציפיות של gcloud, משתמשים בתג:VERSION-emulators.
:latest,:VERSION: דומה ל-stable, עם רכיבים נוספים שכבר מותקנים מראש (רשימת הרכיבים שמותקנים בתמונה מופיעה בהמשך). התמונה מבוססת על תמונת הבסיס העדכנית של Debian 12 שסופקה על ידי Google, ומשתמשת בחבילות deb כדי להתקין את הרכיבים. התמונה הזו תומכת בפלטפורמותlinux/amdו-linux/arm. כדי להתקין גרסאות ספציפיות של gcloud, משתמשים בתג:VERSION.
:slim,:VERSION-slim: דומה לגרסה היציבה, אבל כוללת חבילות נוספות של צד שלישי כמוcurl,python3-crcmod, lsb-release, openssh-client, git, makeו-gnupg. התמונה הזו מבוססת על תמונת הבסיס העדכנית ביותר של Debian 12 שמסופקת על ידי Google. התמונה הזו תומכת בפלטפורמותlinux/amdו-linux/arm. כדי להתקין גרסאות ספציפיות של gcloud, משתמשים בתג:VERSION-slim.
:debian_component_based,:VERSION-debian_component_based: דומה ל-stable, עם רכיבים נוספים שכבר מותקנים מראש (רשימת הרכיבים שמותקנים בתמונה מפורטת בהמשך). התמונה מבוססת על תמונת הבסיס העדכנית של Debian 12 שסופקה על ידי Google, ומשתמשת במנהל הרכיבים כדי להתקין את הרכיבים. התמונה הזו תומכת בפלטפורמותlinux/amdו-linux/arm. כדי להתקין גרסאות ספציפיות של gcloud, משתמשים בתג:VERSION-debian_component_based.
שימוש בגרסה ספציפית בסביבת ייצור
אם אתם משתמשים בתג שלא קשור לגרסה ספציפית של gcloud, יכול להיות שיהיו בסביבה שלכם שינויים משמעותיים מהסוגים הבאים:
- עדכונים בגרסה של Google Cloud SDK, שעשויים לשנות את ההתנהגות של הכלי.
- עדכונים ברשימת הרכיבים המותקנים.
כדי להימנע משינויים שעלולים לשבור את התאימות, מומלץ להשתמש בסביבת הייצור באחת מהאפשרויות הבאות:
- תג עם גרסה, כמו
:496.0.0-stable - גיבוב (hash) ספציפי של תמונה, כמו:
gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:9c0efc06918d5405b13bfe4bb5ce1d98ea4695cc703446e9e0aa0ee8800622df - אירוח התמונה במאגר משלכם
כדאי גם לעדכן את התמונות מעת לעת כדי לקבל את הגרסה העדכנית של gcloud.
בודקים את הגרסה האחרונה של Google Cloud CLI ואת כל הגרסאות הקודמות של Google Cloud CLI.
רכיבים שמותקנים בכל תג
| רכיב | :stable | :alpine | :emulators | :latest | :slim | :debian_component_based |
|---|---|---|---|---|---|---|
| תוספי App Engine Go | x | x | ||||
| Appctl | x | |||||
| כלי שורת הפקודה BigQuery | x | x | x | x | x | x |
| חבילת Python | x | x | x | x | x | x |
| כלי שורת הפקודה Bigtable | x | x | ||||
| Bigtable Emulator | x | x | x | |||
| אמולטור Cloud Datastore | x | x | x | |||
| אמולטור Cloud Firestore | x | x | ||||
| אמולטור Cloud Pub/Sub | x | x | x | |||
| אמולטור Spanner | x | x | ||||
| כלי שורת הפקודה Cloud Storage | x | x | x | x | x | x |
| ספריות הליבה של Google Cloud CLI | x | x | x | x | x | x |
| Google Cloud כלי לגיבוב CRC32C | x | x | x | x | x | x |
| Kustomize | x | |||||
| Minikube | x | |||||
| Nomos CLI | x | |||||
| On-Demand Scanning API extraction helper | x | x | ||||
| Skaffold | x | |||||
| anthos-auth | x | |||||
| פקודות אלפא gcloud | x | x | x | x | ||
| פקודות בטא gcloud | x | x | x | x | ||
| תוספי gcloud app Java | x | |||||
| תוספי gcloud app Python | x | |||||
| תוספי gcloud app Python (ספריות נוספות) | x | x | ||||
| gke-gcloud-auth-plugin | x | x | ||||
| kpt | x | x | ||||
| kubectl | x | x |
התקנת קובץ אימג' של Docker
קובץ האימג' של Docker מתארח ב-Artifact Registry עם שם המאגר הבא: gcr.io/google.com/cloudsdktool/google-cloud-cli. אפשר להשיג את התמונות גם במאגרים us.gcr.io, eu.gcr.io ו-asia.gcr.io.
כדי להשתמש בגרסה היציבה של Google Cloud CLI,
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable, אפשר לקחת אותה מ-Artifact Registry באמצעות הרצת הפקודה הבאה:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stableאפשר גם להשתמש בגיבוב תמונה כדי לשלוף קובץ אימג' של Docker ספציפי מהמאגר. כדי לשלוף את אותה תמונה מהדוגמה הקודמת (
:489.0.0-stable) באמצעות הגיבוב של התמונה, מריצים את הפקודה הבאה:docker pull gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:589a0db8919614ef919dfd6ed89127211b4b6bf5ee6a2e2ce92abf33cbfe49d8כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:489.0.0-stable gcloud versionאם השתמשתם בתג
:stableהצף (שתמיד מצביע על הגרסה האחרונה), מריצים את הפקודה הבאה כדי לאמת את ההתקנה:docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
אימות באמצעות קובץ אימג' של Docker של Google Cloud CLI
כדי לבצע אימות באמצעות קובץ האימג' של Docker של Google Cloud CLI, מריצים אחת מהפקודות הבאות:
מריצים את הפקודה
gcloud auth loginכדי לבצע אימות של gcloud באמצעות פרטי הכניסה של המשתמש:docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth loginאם אתם צריכים לאמת אפליקציות שמשתמשות בממשקי ה-API, צריך להעביר את האפשרות
--update-adc: Google Clouddocker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud auth login --update-adcכדי להגדיר פרויקט ברירת מחדל שנבחר בכל פעם שפותחים את מאגר התגים, מריצים את הפקודה הבאה:
docker run -ti --name gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable /bin/bash -c 'gcloud auth login && gcloud config set project your-project'לאחר שתהליך האימות מסתיים בהצלחה, פרטי הכניסה נשמרים בנפח האחסון של
gcloud-config container.כדי לבצע אימות, מציגים את מכונת המחשוב באמצעות פרטי הכניסה על ידי הרצת הקונטיינר עם
--volumes-from:docker run --rm --volumes-from gcloud-config gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud compute instances list --project your-projectאם רוצים לבצע אימות באמצעות חשבון שירות, משתמשים במאפיין
auth/credential_file_overrideכדי להגדיר נתיב לחשבון שירות שמוגדר כנקודת גישה. לאחר מכן מעדכנים את ההגדרה כדי לקרוא את חשבון השירות המצורף באמצעות משתנה הסביבהCLOUDSDK_CONFIG.בדוגמה הבאה, ההגדרה
mycloudכבר מוגדרת. ההגדרה מצביעה על קובץ אישור שקיים בתוך הקונטיינר כנקודת גישה נפרדת.auth/credential_file_override$ docker run -ti -e CLOUDSDK_CONFIG=/config/mygcloud \ -v `pwd`/mygcloud:/config/mygcloud \ -v `pwd`:/certs gcr.io/google.com/cloudsdktool/google-cloud-cli:stable /bin/bash bash-4.4# gcloud config list [auth] credential_file_override = /certs/svc_account.json bash-4.4# head -10 /certs/svc_account.json { "type": "service_account", "project_id": "project_id1", .... bash-4.4# gcloud projects list PROJECT_ID NAME PROJECT_NUMBER project_id1 GCPAppID 1071284184432מידע נוסף על הגדרת משתני סביבה:
התקנת רכיבים נוספים
אפשר להתקין רכיבים נוספים בקובץ אימג' של Docker של Google Cloud CLI. הגישה להתקנת רכיבים נוספים משתנה בהתאם לסוג תמונת הבסיס.
תמונות המבוססות על Debian
כברירת מחדל, בתמונות היציבות (:stable ו-:VERSION-stable) לא מותקנים רכיבים מלבד bq ו-gsutil. כדי להתקין רכיבים נוספים לתמונה היציבה, מבצעים אחת מהפעולות הבאות:
- יצירת קובץ אימג' משלכם באמצעות קובץ Dockerfile של קובץ האימג'
:stable: התקנת חבילות שלא זמינות ישירות דרךapt-get, כלומר מנוע Docker. - התקנת חבילות או רכיבים נוספים בזמן הריצה: אפשר להתאים אישית את התמונה בלי לארח אותה.
יצירת קובץ אימג' משלכם באמצעות קובץ Dockerfile של אימג' :stable
כדי ליצור תמונה משלכם עם רכיב נוסף מ-:stable, אפשר לשכפל את ספריית cloud-sdk-docker ב-GitHub ולהשתמש בפקודה docker build כדי ליצור את תמונת Docker של :stable מקובץ Docker עם הארגומנט INSTALL_COMPONENTS. לדוגמה, כדי להוסיף רכיבי datastore-emulator:
# clone the GitHub docker directory
$ git clone https://github.com/GoogleCloudPlatform/cloud-sdk-docker.git
$ docker build --build-arg CLOUD_SDK_VERSION=<release_version> \
--build-arg INSTALL_COMPONENTS="google-cloud-cli-datastore-emulator=<release_version>-0" \
-t my-cloud-sdk-docker:stable .
התקנה של חבילות או רכיבים נוספים בזמן ריצה
אם משכתם את קובץ האימג' של stable Docker, תוכלו להתקין את הרכיבים הנוספים הבאים במהלך זמן הריצה:
- gcloud components באמצעות משתנה הסביבה
COMPONENTS. - apt-packages באמצעות משתנה הסביבה
APT_PACKAGES.
לדוגמה, כדי להתקין את הרכיבים cbt ו-kpt בזמן הריצה, אפשר להריץ את הפקודה הבאה:
docker run -e COMPONENTS='google-cloud-cli-cbt google-cloud-cli-kpt' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
כדי להתקין את חבילות ה-apt curl ו-gcc בזמן הפעלת קובץ אימג' של Docker, מריצים את הפקודה הבאה:
docker run -e APT_PACKAGES='curl gcc' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version
תמונות המבוססות על Alpin
כדי להתקין רכיבים נוספים בתמונות שמבוססות על Alpine, יוצרים קובץ Docker שמשתמש בתמונה cloud-sdk כתמונת הבסיס.
לדוגמה, כדי להוסיף רכיבי kubectl ו-app-engine-java:
- יוצרים את קובץ Dockerfile באופן הבא:
FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:alpine
RUN apk --update add gcompat openjdk8-jre
RUN gcloud components install app-engine-java kubectl
- מריצים את הפקודה הבאה כדי ליצור את האימג':
docker build -t my-cloud-sdk-docker:alpine .
בתמונות שמבוססות על Alpine, צריך להתקין את רכיבי התלות של רכיבים נוספים באופן ידני.
העברה לתמונה :stable
אם אתם משתמשים בתמונות Docker :latest, :slim, :emulators, :alpine ו-:debian_component_based, מומלץ לבצע מיגרציה לתמונה :stable שמבוססת על Debian, כדי לקבל גודל תמונה קטן יותר ותיקוני אבטחה משופרים. שלבים להעברה לתמונה :stable:stable
קבלת תמיכה בנושא תמונות
התמונות שמתארחות ב-Artifact Registry מספקות התקנות פונקציונליות מלאות של Google Cloud CLI. אם אתם מוצאים באגים או בעיות שקשורות לקובצי האימג' של Docker, אתם יכולים ליצור כרטיס תמיכה.
כשאתם צריכים תמונה עם רכיבים, חבילות או כלים נוספים, אתם יכולים ליצור שכבת תמונה משלכם על גבי קובץ אימג' של Docker של Google Cloud CLI.
פתרון בעיות
מה צריך לעשות אם מופיעה שגיאת failed to fetch <image-tag> כשמנסים למשוך את קובץ האימג' של Docker?
אם מוצגת לכם שגיאת failed to fetch <image-tag> כשאתם מנסים למשוך קובץ אימג' של Docker של Google Cloud CLI, סביר להניח שאתם מנסים לאחזר תג תמונה שהוצא משימוש והוסר. כדאי לעיין באפשרויות של קובץ אימג' של Docker כדי לראות אילו אפשרויות זמינות לקובץ אימג' של Docker, ולעבור לאחד מהתגים הנתמכים.
מהם תרחישי השימוש שבהם אי אפשר להרחיב ישירות את תמונת :stable Docker
כדי לתמוך בתהליך העבודה הנוכחי שלך?
בטבלה הבאה מפורטים תרחישי שימוש שבהם אי אפשר להרחיב ישירות את תמונת ה-Docker :stable כדי להתאים אותה לתהליך העבודה, ומופיעות אפשרויות לפתרון הבעיה:
| תרחישים לדוגמה | אפשרויות לתיקון |
|---|---|
חבילות של צד שלישי כמו docker או docker-buildx לא נכללות בתמונת :stable |
אם אתם צריכים את חבילות הצד השלישי האלה, אתם יכולים ליצור קובץ אימג' משלכם או להתקין את החבילות האלה בקובץ אימג' של Docker :stable באופן ידני. |
מה צריך לעשות אם הסורק מצא נקודות חולשה בתמונות של Docker?
תמונות Docker של Google Cloud CLI מתארחות ב-Artifact Registry. התמונות נסרקות מדי יום, ופגיעויות וחשיפות נפוצות (CVE) ממוזערות לפני כל גרסה חדשה של gcloud. עם זאת, אם הסורק שלכם זיהה פגיעויות בתמונות Docker של Google Cloud CLI שלא נפתרו, אתם יכולים לדווח על באג ולכלול את הפרטים הבאים:
- סוג הפגיעות.
- המיקום המדויק בתמונה.
פגיעות בתמונות של מערכת ההפעלה הבסיסית מטופלות רק כדי לוודא שתמונות ה-Docker של Google Cloud CLI משתמשות בגרסאות יציבות ועדכניות של Debian או Alpine Linux.
למה יש תמונות ללא תג במאגר Artifact Registry?
תמונות Docker של Google Cloud CLI עם התגים :stable, :alpine, :emulators ו-:debian_component_based תומכות בפלטפורמות arm64 ו-amd64. התמונות נוצרות בתהליך build מרובה ארכיטקטורות, שמשלב תמונות ספציפיות לארכיטקטורה לתוך מניפסט יחיד.
קובץ המניפסט כולל גם תמונות אישור ספציפיות לפלטפורמה. תהליך הבנייה של תמונות מרובות ארכיטקטורות מוסיף תג רק לתמונת המניפסט הסופית, אבל לא מתייג את התמונות הספציפיות לארכיטקטורה או את תמונות האימות. כתוצאה מכך, יכול להיות שתראו תמונות ללא תגים במאגר Artifact Registry. התמונות האלה לא מיועדות לשימוש ואפשר להתעלם מהן בבטחה.
איפה אפשר לקבל מידע על חבילות של צד שלישי שהוסרו מתמונות Docker של gcloud?
מידע על כל חבילות הצד השלישי שהוסרו זמין בהודעות ב-GitHub.