Google Cloud מתחזקת את קובצי האימג' הבסיסיים הבאים שנועדו לשימוש עם Cloud Workstations.
רשימה של תמונות בסיס שהוגדרו מראש
אפשר להשתמש בתמונות האלה ישירות בהגדרות של תחנות עבודה, או להשתמש בהן כתמונות בסיס כשיוצרים תמונות קונטיינר מותאמות אישית באמצעות הפקודה 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/clion:latest | סביבת פיתוח משולבת (IDE) של CLion. אפשר לגשת רק דרך 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. אפשר לגשת רק דרך 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) |
אם נתקלתם בבעיות ב-Posit Workbench IDE או בקובץ אימג' של קונטיינר של 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.מכיוון שהדיסק הקשיח מצורף באופן דינמי לקונטיינר, צריך להוסיף את המשתמשים בהפעלת תחנת העבודה, ולא בקובץ Dockerfile.
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/:
כברירת מחדל, סקריפטים בספרייה הזו מופעלים כ-root. כדי להריץ את הסקריפטים כמשתמש אחר, משתמשים בפקודה
runuser.הסקריפטים מופעלים לפי הסדר המילוני שלהם, ולכן מומלץ להוסיף לסקריפטים קידומת של מספר בן שלוש ספרות שגדול מ-200.
לחלופין, אם לא רוצים להאריך את תוקף התמונה של תחנת עבודה, אפשר ליצור סקריפט customize_environment בספריית הבית.
שינויים בספריית הבית
אם בהגדרת תחנת העבודה מצוין ספריית בית מתמשכת (שזו התנהגות ברירת המחדל), דיסק מתמשך שמגבה את ספריית הבית מצורף באופן דינמי למאגר בזמן הריצה. התהליך הזה מחליף שינויים שבוצעו בספרייה /home בזמן משך זמן של תהליך build של קובץ אימג' של קונטיינר.
כדי לשמור את העדכונים, צריך לשנות את ספריית /home בזמן הריצה של הקונטיינר על ידי הוספת סקריפט לספרייה /etc/workstation-startup.d, או על ידי הוספת הגדרה לכל משתמש בספרייה /etc/profile.d.
כדי לזרז את התהליך, כדאי להריץ את סקריפט ההגדרה כתהליך ברקע (מוסיפים אמפרסנד, &, בסוף הפקודה) כדי למנוע חסימה של הפעלת הקונטיינר.
דוגמאות להגדרות של זמן בנייה שצריך להעביר לזמן ריצה של קונטיינר:
- הגדרה של
gitלכל משתמש - מאגרי
gitששוכפלו בספריית הבית - הגדרת משתמש ישירה, כמו הצבת קבצים בספרייה
$HOME/.config - יצירת משתמש
יצירה ושינוי של משתמשים
מכיוון שהדיסק הקשיח מצורף באופן דינמי לקונטיינר בזמן הריצה, צריך להוסיף את המשתמשים בהפעלה של תחנת העבודה, ולא בקובץ Dockerfile. כדי לשנות או ליצור משתמשים נוספים, מומלץ לעדכן את /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, שמקבל את הגרסאות העדכניות של מפתחות ציבוריים שהותקנו מראש ומייבא אותם מחדש.
רשימת גרסאות IDE מותקנות
חלק מקובצי הבסיס של Cloud Workstations מגיעים עם סביבת פיתוח משולבת (IDE) שמותקנת מראש. לנוחיותכם, מצורף סקריפט /google/scripts/preinstalled-ide-versions.sh
שמפרט את השם ופרטי הגרסה של סביבות הפיתוח המשולבות שמותקנות בתמונה.
השבתה של sudo הרשאות root
למשתמש שמוגדר כברירת מחדל בתחנת העבודה יש הרשאות גישה לרמת הבסיס (root) בקונטיינרים האלה.sudo כדי להשבית את גישת הבסיס לקונטיינר Docker, מגדירים את משתנה הסביבה CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO לערך true כשיוצרים את הגדרת תחנת העבודה.
כדי להגדיר את משתנה הסביבה הזה דרך מסוף Google Cloud כשיוצרים את הגדרת תחנת העבודה, פועלים לפי השלבים הבאים:
- כשיוצרים את ההגדרה של תחנת העבודה, משלימים את ההגדרה של 'מידע בסיסי' ושל 'הגדרת המכונה'.
- בתיבת הדו-שיח Environment customization, מרחיבים את הקטע Advanced container options ובוחרים באפשרות Environment variables.
- לוחצים על הוספההוספת משתנה.
- מזינים את הערך
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 באופן קבוע, כדי למנוע את כיבוי תחנת העבודה בגלל פסק זמן של חוסר פעילות כשמריצים תהליכים ברקע בלי אינטראקציה ישירה.
המאמרים הבאים
- התאמה אישית של קובצי אימג' בקונטיינר.
- אוטומציה של בנייה מחדש של קובצי אימג' של קונטיינרים כדי לסנכרן עדכונים של קובצי אימג' בסיסיים באמצעות Cloud Build ו-Cloud Scheduler.
- להגדיר שיטות אבטחה מומלצות.