Google Cloud מתחזקת את קובצי האימג' הבסיסיים הבאים של Cloud Workstations, שנגזרים מקובצי האימג' הבסיסיים הסטנדרטיים של Google Cloud.
רשימה של קובצי אימג' בסיסיים שהוגדרו מראש
אפשר להשתמש בקובצי האימג' האלה ישירות בהגדרות של תחנות העבודה, או כקובצי אימג' בסיסיים כשיוצרים קובצי אימג' של קונטיינרים בהתאמה אישית באמצעות הפקודה FROM של Docker.
| תמונה | תיאור |
|---|---|
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest | עורך בסיסי של Cloud Workstations, Code OSS ל-Cloud Workstations, שמבוסס על Code-OSS. (ברירת מחדל) |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/base:latest | קובץ אימג' בסיסי בלי IDE מותקן. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss-cuda:latest | עורך בסיסי של Cloud Workstations, Code OSS ל-Cloud Workstations, שמבוסס על Code-OSS עם NVIDIA CUDA Toolkit. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/clion:latest | CLion IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/goland:latest | GoLand IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/intellij-ultimate:latest | IntelliJ IDEA Ultimate IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/phpstorm:latest | PhpStorm IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/pycharm:latest | PyCharm Professional IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rider:latest | Rider IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rubymine:latest | RubyMine IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/webstorm:latest | WebStorm IDE. אפשר לגשת אליה רק דרך JetBrains Gateway. מידע על התקנה ותחילת העבודה זמין במאמר פיתוח קוד באמצעות סביבות פיתוח משולבות (IDE) מקומיות של JetBrains. |
רשימה של קובצי אימג' בסיסיים של צד שלישי
| תמונה של צד שלישי | ספק צד שלישי |
|---|---|
| us-central1-docker.pkg.dev/posit-images/cloud-workstations/workbench:latest | Posit Workbench (כולל RStudio Pro) |
אם נתקלתם בבעיות ב-IDE של Posit Workbench או בקובץ האימג' של קונטיינר Posit Workbench, דווחו עליהן ל-Posit ב-GitHub.
מבנה קובץ האימג' הבסיסי של Cloud Workstations
תמונות הבסיס של Cloud Workstations חולקות את המבנה המוגדר הבא:
- קובץ נקודת הכניסה של תמונת הבסיס מוגדר ל-
/google/scripts/entrypoint.sh. בזמן ההפעלה, קובצי אימג' בסיסיים מריצים קבצים ב-
/etc/workstation-startup.d/*בסדר לקסיקוגרפי כדי לאתחל את סביבת העבודה.אלה הקבצים וההתנהגות שלהם:
-
000_configure-docker.sh: מגדיר ומריץ את Docker בתוך תחנת העבודה.
010_add-user.sh: יוצר את משתמש ברירת המחדל ב-Cloud Workstations.מכיוון שדיסק האחסון המתמיד (persistent disk) מחובר באופן דינמי לקונטיינר, צריך להוסיף משתמשים בזמן ההפעלה של תחנת העבודה, ולא בקובץ Docker.
020_start-sshd.sh: הפעלת השירותsshdבקונטיינר.
030_customize-environment.sh: הפעלה של/home/user/.workstation/customize_environmentבתורuser.
110_start-$IDE.sh: הפעלת ה-IDE של קובץ האימג'.
-
ב-Cloud Workstations, קובצי האימג' של Docker נשמרים בספריית הבית ב-
/home/.docker_dataכדי שהם יישמרו בין הסשנים.
כדי להוסיף פונקציונליות נוספת במהלך ההפעלה של תחנת העבודה, מוסיפים את הסקריפטים לספרייה /etc/workstation-startup.d/:
כברירת מחדל, סקריפטים בספרייה הזו פועלים כשורש. כדי להריץ את הסקריפטים כמשתמש אחר, משתמשים בפקודה
runuser.הסקריפטים מופעלים בסדר לקסיקוגרפי, לכן מומלץ להוסיף בתחילת הסקריפטים מספר תלת-ספרתי שגדול מ-200.
לחלופין, אם אתם לא רוצים להרחיב קובץ אימג' של סביבת עבודה, אתם יכולים ליצור סקריפט customize_environment בספריית הבית.
שינויים בספריית הבית
כשהגדרת תחנת העבודה מציינת ספריית בית לאחסון מתמיד (זוהי פעולת ברירת המחדל), דיסק לאחסון מתמיד שמגבה את ספריית הבית מצורף באופן דינמי לקונטיינר בזמן הריצה. התהליך הזה מחליף את השינויים שבוצעו בספרייה /home בזמן פיתוח ה-build של קובץ האימג' של הקונטיינר.
כדי לשמור את העדכונים, צריך לשנות את הספרייה /home בזמן הריצה של הקונטיינר על ידי הוספת סקריפט בספרייה /etc/workstation-startup.d, או על ידי הוספת הגדרה לכל משתמש בספרייה /etc/profile.d.
כדי לזרז את התהליך, כדאי להריץ את סקריפט ההגדרות כתהליך ברקע (מוסיפים את התו & בסוף הפקודה) כדי לא לחסום את ההפעלה של הקונטיינר.
דוגמאות להגדרות של זמן build שצריך להעביר לזמן ריצה של קונטיינר:
- הגדרת
gitלכל משתמש gitמאגרים ששוכפלו בספריית הבית- הגדרת משתמש ישירה, כמו הצבת קבצים בספרייה
$HOME/.config - יצירת משתמש
יצירה ושינוי של משתמשים
מכיוון שדיסק אחסון מתמיד (persistent disk) מתחבר באופן דינמי לקונטיינר בזמן הריצה, צריך להוסיף משתמשים בזמן ההפעלה של תחנת העבודה, ולא בקובץ Docker. כדי לשנות משתמשים או ליצור משתמשים נוספים, מומלץ לעדכן את /etc/workstation-startup.d/010_add-user.sh או ליצור סקריפט משלכם שפועל בזמן ההפעלה.
בנוסף, אפשר לשנות את פרופיל ברירת המחדל של bash למשתמשים על ידי עדכון הקבצים ב-/etc/profile.d.
עדכון מפתחות Secure APT שהוגדרו מראש
קובצי האימג' הבסיסיים של Cloud Workstations מותקנים מראש עם מספר כלים שהתקבלו ממאגרים שונים של צד שלישי באמצעות Secure APT. כחלק מתהליך ההתקנה, המפתחות הציבוריים שבעלי המאגר מספקים מיובאים באמצעות gpg ומוצבים בקבצים נפרדים ב-/usr/share/keyrings/. הקבצים האלה מקושרים מקובצי list תואמים בקטע /etc/apt/sources.list.d/.
כך apt יכול לאמת את התקינות של מאגר נתון בזמן אינטראקציה איתו.
לפעמים בעלים של מאגרים של צד שלישי מחליטים לשנות את המפתח הציבורי שמשמש לאימות התקינות של המאגר שלהם. במקרה כזה, apt מציג שגיאה כשמנסים לבצע פעולה במאגר. כדי לפתור את הבעיה הפוטנציאלית הזו, אתם יכולים להשתמש ב-/google/scripts/refresh-preinstalled-apt-keys.sh, שמקבל את הגרסאות העדכניות ביותר של מפתחות ציבוריים שהותקנו מראש ומייבא אותם מחדש.
אפשר גם להריץ את הסקריפט הזה ישירות ב-Dockerfile בהתאמה אישית לפני שמריצים את apt-get update:
# Refresh the preinstalled APT keys
RUN /google/scripts/refresh-preinstalled-apt-keys.sh
RUN apt-get update
הצגת רשימה של גרסאות ה-IDE המותקנות
בחלק מתמונות הבסיס של Cloud Workstations מותקנת מראש סביבת פיתוח משולבת (IDE). לנוחותכם, אפשר להשתמש בסקריפט /google/scripts/preinstalled-ide-versions.sh שכולל את השם ופרטי הגרסה של סביבות הפיתוח המשולבות שמותקנות בתמונה.
השבתת הרשאות הבסיס (root) של sudo
למשתמש ברירת המחדל של תחנת העבודה יש הרשאות גישה לרמה הבסיסית (root) של sudo בקונטיינרים האלה. כדי להשבית את גישת הבסיס לקונטיינר של Docker, מגדירים את משתנה הסביבה CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO לערך true כשיוצרים את הגדרות תחנת העבודה.
כדי להגדיר את משתנה הסביבה הזה דרך מסוף Google Cloud כשיוצרים את הגדרת תחנת העבודה, פועלים לפי השלבים הבאים:
- כשיוצרים את הגדרות סביבת העבודה, צריך להשלים את ההגדרות של Basic information ושל Machine configuration.
- בתיבת הדו-שיח Environment customization, מרחיבים את הקטע Advanced container options ובוחרים באפשרות משתני סביבה.
- לוחצים על addהוספת משתנה.
- מזינים את הערכים
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDOו-true.
התאמה אישית בלי להרחיב את התמונה
כדי שיהיה נוח, כל קובצי האימג' הבסיסיים של Cloud Workstations בודקים אם יש קובץ להפעלה ב-/home/user/.workstation/customize_environment, ואם הוא קיים, מריצים אותו ברקע בתור user. כך אפשר להפעיל כל סקריפט או קובץ בינארי בזמן ההפעלה. בניגוד ל-.profile או ל-.bashrc, הסקריפט פועל רק פעם אחת כשעמדת העבודה מתחילה, ולא פעם אחת לכל התחברות למעטפת.
הסקריפט של customize_environment פועל בתור user, לכן חשוב לעדכן את ההרשאות לפי הצורך כשכותבים את הסקריפט. לדוגמה, אם רוצים להתקין את Emacs בכל פעם שתחנת העבודה מופעלת, התוכן של customize_environment יכול להיות דומה לזה:
#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs
יומני הביצוע של customize_environment נמצאים בקונטיינר ב-/var/log/customize_environment, והם נכתבים גם ביומני הפלט של הקונטיינר.
אחרי שמריצים את customize_environment, נוצר קובץ ב-/var/run/customize_environment_done. מכיוון ש-customize_environment פועל במקביל להפעלת תחנת העבודה, החבילות שמותקנות על ידי הסקריפט יכולות להיות זמינות כבר כמה רגעים אחרי שתחנת העבודה הופעלה.
מניעת זמן קצוב לתפוגה במצב חוסר פעילות
כדי שיהיה לכם נוח, כל קובצי האימג' הבסיסיים של Cloud Workstations כוללים סקריפט שמותקן מראש ב-/google/scripts/keep_alive.sh. הסקריפט הזה שולח הודעות keep-alive באופן קבוע, שיכולות למנוע את השבתת סביבת העבודה בגלל זמן קצוב לתפוגה של חוסר פעילות כשאתם מריצים תהליכים ברקע בלי אינטראקציה ישירה.
איך למנוע מצב של זמן קצוב לתפוגה של חוסר פעילות עם סוכני AI
בנוסף, קובצי האימג' הבסיסיים של Cloud Workstations כוללים סקריפטים לדוגמה להגדרת הסוכן בנתיב /google/samples/agents/keepalive/. ההגדרות לדוגמה האלה מאפשרות להגדיר סוכני תכנות מבוססי-AI (כמו Claude Code ו-Antigravity CLI) בתוך תחנת העבודה, כדי להשאיר אותה פעילה באופן אוטומטי בזמן שהם עובדים על משימות. כשהסוכן מסיים את המשימות שלו או משהה אותן כדי להמתין לקלט מהמשתמש, הסקריפט מפסיק לשלוח הודעות keep-alive, וכך מאפשר לתחנת העבודה להגיע לזמן קצוב לתפוגה בגלל חוסר פעילות.
ההגדרות האלה פועלות בצורה הטובה ביותר כשהגדרת סביבת העבודה מוגדרת להשתמש בהשהיה של סביבת העבודה (idleAction מוגדר ל-SUSPEND), מה שמאפשר לסביבת העבודה לשמור את מצב הזיכרון ולהמשיך בצורה חלקה כשתחזרו.
מידע נוסף על הגדרת תהליכי עבודה עם נציג תמיכה ו-keep-alive hooks זמין במאמר פיתוח מותאם לנציג תמיכה.
המאמרים הבאים
- התאמה אישית של קובצי האימג' של הקונטיינרים
- אוטומציה של בנייה מחדש של קובצי אימג' של קונטיינרים כדי לסנכרן עדכונים של קובצי אימג' בסיסיים באמצעות Cloud Build ו-Cloud Scheduler.
- להגדיר שיטות מומלצות לאבטחה.