אפשר להריץ קונטיינר יחיד במכונה וירטואלית או בכל מכונה וירטואלית בקבוצת מופעי מכונה מנוהלים (MIG). כדי לעשות את זה, מציינים קובץ אימג' של קונטיינר ופרמטרים של הגדרה כשיוצרים מכונה וירטואלית או תבנית של הגדרות מכונה.
במאמר הזה מוסבר על אפשרויות ההגדרה להפעלת קונטיינרים במכונות ב-Compute Engine.
לפני שמתחילים
- אם אתם לא מכירים קונטיינרים, כדאי לקרוא את המאמר קונטיינרים ב-Compute Engine.
- אם אתם לא מכירים את Docker, כדאי לקרוא את המסמכים של Docker.
- מידע נוסף על פריסת קונטיינרים ב-Compute Engine
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
כשיוצרים מכונה או תבנית של הגדרות מכונה לשימוש בפריסת קונטיינרים במכונות וירטואליות ובקבוצות של מכונות מנוהלות, צריך לציין את הגדרות הקונטיינר באמצעות המסוף Google Cloud או Google Cloud CLI.
בקטעים הבאים מוסבר איך להגדיר קונטיינרים במכונות וירטואליות, אבל אפשר גם להגדיר את האפשרויות הבאות כשיוצרים תבנית של הגדרות מכונה. משתמשים במסוף Google Cloud או ב-Google Cloud CLI כדי להגדיר אפשרויות למכונות וירטואליות בתבנית של הגדרות מכונה.
אפשר להשתמש בפקודות docker run כדי להגדיר קונטיינר במכונה וירטואלית שמריצה מערכת הפעלה שמותאמת לקונטיינרים, או לציין את הפקודה docker run בסקריפט לטעינה בזמן ההפעלה כדי ליצור ולהגדיר מכונה וירטואלית. מידע נוסף זמין במאמר שימוש בסקריפטים להפעלה כדי לפרוס קונטיינרים במכונות וירטואליות.
ציון מדיניות הפעלה מחדש
אפשר להגדיר מדיניות הפעלה מחדש כדי לציין אם להפעיל מחדש קונטיינר ביציאה. מדיניות ברירת המחדל היא הפעלה מחדש תמיד. אפשר גם להגדיר את המדיניות כך שההפעלה תתחיל מחדש אם היא תיכשל, או שהיא לא תתחיל מחדש אף פעם.
docker run
משתמשים בדגל --restart של הפקודה docker run.
ניסיונות חוזרים להפעלה מחדש של קונטיינר נובעים מההתנהגות שמוגדרת כברירת מחדל ב-Docker, כפי שמפורט בהפניה ל-Docker --restart.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בקטע Restart policy, בוחרים את מדיניות ההפעלה מחדש של הקונטיינר.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-restart-policy כדי לציין מדיניות להפעלה מחדש של מאגר:
always(ברירת מחדל)on-failurenever
בדוגמה הבאה מופעל קונטיינר עם on-failure מדיניות הפעלה מחדש, כלומר ההפעלה מחדש מתבצעת רק כשקוד היציאה של הקונטיינר שונה מאפס:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-restart-policy on-failure
משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-restart-policy כדי להגדיר את מדיניות ההפעלה מחדש של קונטיינר שפועל במכונה וירטואלית.
הפעלת קונטיינר במצב הרשאות
אפשר להריץ קונטיינר במצב הרשאות כדי לאפשר גישה לכל המכשירים במארח. כברירת מחדל, הקונטיינרים מופעלים כקונטיינרים ללא הרשאות, ואסור להם לגשת למכשירים כלשהם.
docker run
משתמשים בדגל --privileged של הפקודה docker run. מידע נוסף זמין במאמר בנושא הרשאות בזמן ריצה ויכולות של Linux.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בוחרים באפשרות הפעלה כבעל הרשאה.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-privileged כדי להריץ מאגר עם הרשאת זמן ריצה. בדוגמה הבאה מפעילים קונטיינר של busybox במצב הרשאות:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-privileged
כדי לעדכן קונטיינר במכונה וירטואלית, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-privileged. כדי להשבית את מצב ההרשאות, משתמשים בדגל --no-container-privileged.
הקצאת מאגר ל-STDIN בזמן הריצה של הקונטיינר
אפשר להקצות מאגר נתונים זמני ל-STDIN בזמן הריצה של הקונטיינר כדי להשאיר את הזרם STDIN פתוח בקונטיינר. אם לא מגדירים את הערך הזה, קריאות מ-STDIN
במאגר תמיד יחזירו EOF.
בנוסף להקצאת פסאודו-TTY, צריך להשאיר את הזרם STDIN פתוח כדי ליצור מעטפת אינטראקטיבית במאגר וכדי שהמאגר יקבל את הקלט הרגיל שלו מצינור.
docker run
משתמשים בדגל --interactive (-i) של הפקודה docker run. מידע נוסף זמין במאמרי העזרה בנושא הדגל --interactive.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בוחרים באפשרות הקצאת מאגר ל-STDIN.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-stdin כדי להקצות מאגר זמני ל-STDIN בזמן הריצה של הקונטיינר. בדוגמה הבאה מופעל מאגר תגים וחלון STDIN נשאר פתוח:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin
משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-stdin כדי לעדכן קונטיינר במכונה וירטואלית. משתמשים בדגל --no-container-stdin כדי להשבית את ההקצאה של מאגר זמני ל-STDIN.
הקצאת פסאודו-TTY
הקצאת פסאודו-TTY לקונטיינר נדרשת כדי ליצור מעטפת אינטראקטיבית בקונטיינר (בנוסף להקצאת מאגר ל-STDIN).
docker run
משתמשים בדגל --tty (-t) של הפקודה docker run. מידע נוסף זמין בדגל --tty.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בוחרים באפשרות הקצאת פסאודו-TTY.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-tty כדי להקצות פסאודו-TTY. בדוגמה הבאה מופעל קונטיינר ומוקצה לו פסאודו-TTY:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin \ --container-tty
כדי לעדכן קונטיינר במכונה וירטואלית, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-tty. משתמשים בדגל --no-container-tty כדי לא להקצות פסאודו-TTY.
שינוי פקודת ברירת המחדל להרצה בהפעלת הקונטיינר
ה-ENTRYPOINT של קובץ אימג' של קונטיינר מציין איזה קובץ הפעלה יופעל כשהקונטיינר יתחיל לפעול, ומאפשר להפעיל את הקונטיינר כאילו הוא קובץ בינארי.
אפשר לבטל את הפקודה ENTRYPOINT של קובץ אימג' של קונטיינר.
docker run
משתמשים בדגל --entrypoint (פקודה בלבד, ללא ארגומנטים) של הפקודה docker run. מידע על ENTRYPOINT ועל התכונה הניסיונית --entrypoint.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בשדה Command (פקודה), מזינים פקודה אחת שניתנת להפעלה ללא פרמטרים – לדוגמה,
uptime. - כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-command כדי לשנות את תמונת הקונטיינר ENTRYPOINT. בדוגמה הבאה מריצים את הפקודה uptime בקונטיינר busybox כדי להציג את הזמן שעבר מאז ההפעלה האחרונה:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "uptime"
כדי לעדכן פקודה עבור קונטיינר במכונה וירטואלית, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-command.
כדי לנקות את פקודת ברירת המחדל עבור המאגר המעודכן, משתמשים בדגל --clear-container-command עם הפקודה update-container.
העברת ארגומנטים לפקודת ENTRYPOINT של מאגר
אפשר להעביר (לצרף) ארגומנטים לפקודת ENTRYPOINT של הקונטיינר או לשנות את פקודת CMD של הקונטיינר שמוגדרת כברירת מחדל.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בקטע Arguments (ארגומנטים), לוחצים על Add argument (הוספת ארגומנט).
- מזינים ארגומנט אחד של פקודה בכל תיבה.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-arg כדי להעביר ארגומנטים לפקודת ENTRYPOINT של קובץ אימג' של קונטיינר. צריך להשתמש בדגל נפרד לכל ארגומנט.
בדוגמה הבאה מריצים את הפקודה /bin/ash עם הארגומנטים -c 'ls -l' במאגר שהוגדר להרצה אוטומטית של busybox:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "/bin/ash" \ --container-arg="-c" \ --container-arg="ls -l"
משתמשים בפקודה gcloud compute instances update-container עם הדגלים --container-arg כדי לעדכן את ארגומנטי הפקודה של קונטיינר שפועל במכונה וירטואלית. העדכון מחליף את כל רשימת הארגומנטים ברשימה החדשה.
משתמשים בדגל --clear-container-args עם הפקודה update-container כדי להסיר את כל הארגומנטים מהצהרת המאגר.
הגדרה של אפשרויות לדרייבר של יומנים
אם אתם צריכים להגדיר אפשרויות של מנהל יומנים, אתם יכולים ליצור סקריפט לטעינה בזמן ההפעלה של מכונה וירטואלית כדי לעדכן את קובץ התצורה של Docker עם אפשרויות הרישום ביומן שאתם צריכים. האפשרויות האלה חלות על כל מאגרי התגים שפועלים במכונה הווירטואלית ושלא צוינו בהם אפשרויות של מנהל יומנים.
לדוגמה, סקריפט לטעינה בזמן ההפעלה הבא מגדיר כמה אפשרויות, כולל אפשרות להגבלת גודל היומן של הקונטיינר, ואז מפעיל מחדש את Docker במכונה הווירטואלית:
cat <<EOF > /etc/docker/daemon.json
{
"live-restore": true,
"storage-driver": "overlay2",
"log-opts": {
"max-size": "10m"
}
}
EOF
systemctl restart docker
הגדרת משתני סביבה
אפשר להגדיר משתני סביבה בקונטיינר. המערכת מתייחסת רק לערך האחרון של KEY אם המאפיין KEY חוזר על עצמו יותר מפעם אחת.
docker run
משתמשים בדגל --env של הפקודה docker run. איך מגדירים משתני סביבה באמצעות מנוע Docker.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בקטע Environment variables, לוחצים על Add variable.
- מוסיפים או מסירים משתני סביבה לפי הצורך, כל אחד בשורה נפרדת.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-env כדי להגדיר משתני סביבה בקונטיינר.
בדוגמה הבאה מוגדרים שלושה משתני סביבה: HOME, MODE ו-OWNER:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env HOME=/home,MODE=test,OWNER=admin
משתמשים בדגל --container-env-file כדי להגדיר משתני סביבה מקובץ מקומי. בדוגמה הבאה, שני משתני הסביבה מוגדרים מתוך הקובץ env.txt:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env-file ./env.txt
התוכן של הקובץ env.txt הוא:
# this is a comment
HOME=/home
MODE=test
OWNER=admin
כדי לעדכן משתני סביבה של קונטיינר במכונה וירטואלית, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-env או --container-env-file. הפעולה הזו מעדכנת את כל המשתנים שמופיעים בהצהרת מאגר התגים של מופע ה-VM. משתנים שלא מופיעים בהצהרת מאגר התגים מתווספים.
משתמשים בדגל --remove-container-env כדי להסיר משתני סביבה כשמעדכנים קונטיינר במכונה וירטואלית. בדוגמה הבאה מוסרים משתני הסביבה שנקראים MODE ו-OWNER:
gcloud compute instances update-container busybox-vm \ --remove-container-env MODE,OWNER
אם משתנה סביבה שצוין לא קיים, המערכת מתעלמת ממנו בלי להציג הודעה.
טעינת ספרייה במארח כנפח נתונים
אפשר לטעון ספרייה ממכונה וירטואלית מארחת לתוך קונטיינר.
docker run
משתמשים בדגל --volume ובדגל --mount עם האפשרות mount type=bind של הפקודה docker run. במאמר הזה מוסבר איך מנוע Docker מטמיע ספריית מארח כנפח נתונים.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בקטע Volume mounts (חיבורים של אמצעי אחסון), לוחצים על Add volume (הוספת אמצעי אחסון).
מהרשימה סוג עוצמת הקול בוחרים באפשרות ספרייה ומבצעים את הפעולות הבאות:
- בשדה Mount path, מציינים נתיב להעלאה במבנה של ספריית קונטיינר שבה רוצים להעלות ספריית מארח.
- בשדה Host path, מציינים את נתיב המארח לספריית המארח שרוצים לטעון.
- ברשימה Mode, מציינים אם להעלות את הספרייה במצב קריאה/כתיבה או במצב קריאה-בלבד.
כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-mount-host-path כדי לטעון ספרייה של מכונת VM מארחת לתוך קונטיינר. בדוגמה הבאה, הספרייה המארחת /tmp נטענת לתוך הקונטיינר בנתיב /logs במצב קריאה/כתיבה:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-host-path mount-path=/logs,host-path=/tmp,mode=rw
מציינים mode=ro כדי לטעון ספריית מארח במצב קריאה בלבד.
כדי לעדכן את הנקודות לחיבור ספריות במארח בקונטיינר, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-mount-host-path. משתמשים בדגל --remove-container-mounts כדי להסיר נקודות לחיבור נפחים עם נתיבי החיבור שצוינו. בדוגמה הבאה מוסרת טעינה של נתיב מארח באמצעות mount-path=/logs:
gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
אם נתיב הטעינה שצוין לא קיים, המערכת מתעלמת ממנו בלי להציג הודעה.
התקנת מערכת הקבצים tmpfs כנפח נתונים
אפשר לטעון מערכת קבצים ריקה של tmpfs לתוך קונטיינר.
מערכת קבצים ריקה של tmpfs דומה לנפח EmptyDir של Google Kubernetes Engine עם medium:Memory. בניגוד ל-Docker, שבו נתוני tmpfs נמחקים בהפעלות מחדש של קונטיינרים, ב-tmpfs בקונטיינר של Compute Engine, עוצמת הקול והנתונים נשמרים בהפעלות מחדש של קונטיינרים ונמחקים רק בהפעלה מחדש של מכונה וירטואלית.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בקטע Volume mounts (חיבורים של אמצעי אחסון), לוחצים על Add volume (הוספת אמצעי אחסון).
- מהרשימה סוג נפח בוחרים באפשרות TmpFS.
- בשדה Mount path (נתיב להרכבה), מציינים נתיב להרכבה במבנה של ספריית קונטיינר שבה רוצים להרכיב נפח TmpFS.
- ברשימה Mode, מציינים אם להטמיע את נפח ה-TmpFS במצב קריאה/כתיבה או במצב קריאה-בלבד.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בדגל --container-mount-tmpfs כדי לטעון מערכת קבצים ריקה tmpfs לתוך קונטיינר. בדוגמה הבאה, מערכת קבצים מסוג tmpfs נטענת לקונטיינר בנתיב /cache במצב קריאה/כתיבה:
gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-tmpfs mount-path=/cache
כדי לעדכן את הנפחים tmpfs במאגר, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-mount-tmpfs.
כדי להסיר נקודת הרכבה tmpfs עם נתיב הרכבה שצוין במהלך עדכון, משתמשים בדגל --remove-container-mounts. בדוגמה הבאה מוסר הטעינה tmpfs באמצעות mount-path=/cache:
gcloud compute instances update-container busybox-vm \ --remove-container-mounts /cache
אם נתיב הטעינה שצוין לא קיים, המערכת מתעלמת ממנו בלי להציג הודעה.
טעינה של דיסק מתמיד כנפח נתונים
ב-מערכת הפעלה שמותאמת לקונטיינרים 69 או בגרסה מתקדמת יותר, אפשר לטעון דיסקים אחסון מתמידים ממכונת VM מארחת לתוך קונטיינר.
דרישות מוקדמות
- בדיסק צריכה להיות מערכת קבצים
ext4או שלא תהיה בו מערכת קבצים. אם אין מערכת קבצים ראשונית, סוכן הפעלת הקונטיינר מעצב את הדיסק ל-ext4, ונתמכות רק פעולות קריאה/כתיבה של קובץ מצורף והרכבה. - הדיסק צריך להיות מצורף למכונה הווירטואלית.
יש תמיכה במכשירים ללא מחיצות ובמחיצות. במקרים של טעינת מחיצות, הדיסק לא יכול להיות ריק, הוא חייב להכיל טבלת מחיצות קיימת.
המסוף
נכנסים לדף Create an instance.
בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).
בדף Configure container, מבצעים את הפעולות הבאות:
- מציינים שם של קובץ אימג' של קונטיינר.
- בקטע Volume mounts (חיבורים של אמצעי אחסון), לוחצים על Add volume (הוספת אמצעי אחסון).
- ברשימה סוג נפח האחסון, בוחרים באפשרות דיסק.
- בשדה Mount path, מציינים נתיב במבנה הספריות של הקונטיינר שבו רוצים לצרף את הדיסק הקבוע.
- ברשימה Disk name, בוחרים דיסק קיים להרכבה.
- בשדה מחיצה, מציינים את מספר המחיצה להרכבה אם בדיסק יש טבלת מחיצות. אם בדיסק אין מחיצות, משאירים את השדה הזה ריק.
- ברשימה Mode, מציינים אם להעלות את הספרייה במצב קריאה/כתיבה או במצב קריאה-בלבד.
- כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
משתמשים בפקודה gcloud compute instances create-with-container או בפקודה gcloud compute instances update-container עם הדגל --container-mount-disk כדי לטעון דיסק מתמשך לתוך קונטיינר.
בדוגמה הבאה, שני דיסקים, my-data-disk ו-my-scratch-disk, נטענים לקונטיינר בנתיבי הטעינה /disks/data-disk ו-/disks/scratch-disk.
gcloud compute instances create-with-container busybox-vm \ --disk name=my-data-disk \ --create-disk name=my-scratch-disk,auto-delete=yes,image=ubuntu-1710-artful-v20180315,image-project=ubuntu-os-cloud \ --container-image docker.io/busybox:1.27 \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=ro \ --container-mount-disk mount-path="/disks/scratch-disk",name=my-scratch-disk
שימו לב שהדגל --disk מצרף את my-data-disk, הדגל --create-disk
יוצר ומצרף את my-scatch-disk, והדגל --container-mount-disk
מטמיע את הדיסקים המצורפים במאגר התגים. מכיוון שלא צוין mode עבור my-scratch-disk, הדיסק הזה מותקן בקונטיינר במצב קריאה/כתיבה כברירת מחדל.
משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-mount-disk כדי לטעון דיסקים מצורפים נוספים או כדי לשנות טעינות קיימות של דיסקים.
משתמשים בדגל --remove-container-mounts כדי להסיר טעינה של נפח דיסק עם נתיב הטעינה שצוין. בדוגמה הבאה משנים את מצב הטעינה של my-data-disk לקריאה/כתיבה ומסירים את טעינת הדיסק באמצעות mount-path="/disks/scratch-disk".
gcloud compute instances update-container busybox-vm \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=rw \ --remove-container-mounts "/disks/scratch-disk"
אם נתיב ההרכבה שמעבירים לדגל --remove-container-mounts לא קיים, המערכת מתעלמת ממנו בלי להציג הודעה.
פרסום יציאות של מאגרים
מכונות וירטואליות עם קונטיינרים משתמשות במצב רשת של המארח, שבו קונטיינר חולק את מחסנית הרשת של המארח וכל הממשקים מהמארח זמינים לקונטיינר.
ליציאות של הקונטיינר יש מיפוי של אחד לאחד ליציאות של מכונת ה-VM המארחת. לדוגמה, יציאה 80 של קונטיינר ממופה ליציאה 80 של המכונה הווירטואלית המארחת. Compute Engine לא תומך בסימון של פרסום יציאה (-p), ולא צריך לציין אותו כדי שהמיפוי יפעל.
כדי לפרסם את היציאות של קונטיינר, מגדירים כללים של חומת אש כדי לאפשר גישה ליציאות של המכונה הווירטואלית המארחת. היציאות התואמות של הקונטיינר נגישות באופן אוטומטי, בהתאם לכללי חומת האש.
דוגמה: פרסום יציאה 80 עבור מאגר NGINX
docker run
מגדירים את הדגל --network="host" כשמשתמשים בפקודה docker run. מידע נוסף על הגדרות רשת של מאגר תגים ומצב מארח
gcloud
בדוגמה הבאה מוצג איך ליצור מכונת VM עם קונטיינר NGINX ולאפשר תנועה ליציאה 80 של הקונטיינר.
יצירת מכונה וירטואלית עם קונטיינר NGINX:
gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \ --tags http-server
הקונטיינר חולק את מחסנית הרשת של המכונה הווירטואלית המארחת, ויציאה 80 של הקונטיינר מתפרסמת ביציאה 80 של המכונה הווירטואלית המארחת. התג
http-serverמשמש כתג יעד לכלל חומת האש שיוצרים בשלב הבא.יוצרים כלל חומת אש שמאפשר חיבורים ליציאה 80 של מופע המכונה הווירטואלית. כלל חומת האש הבא מאפשר חיבורי HTTP למכונות וירטואליות עם התג
http-server.gcloud compute firewall-rules create allow-http \ --allow tcp:80 --target-tags http-server
המאגר מתחיל לקבל תנועה באופן אוטומטי ביציאה 80. אין צורך לבצע הגדרות נוספות.
אפשר ליצור כללי חומת אש לשילובים של פרוטוקול:יציאה של מכונת VM מארחת, כאשר הפרוטוקול הוא
tcpאוudp. הכללים האלה קובעים למעשה את הגישה מחוץ למכונה הווירטואלית ליציאות המתאימות של מאגר התגים.