הגדרת אפשרויות להפעלת מאגר התגים

אפשר להריץ קונטיינר יחיד במכונה וירטואלית או בכל מכונה וירטואלית בקבוצת מופעי מכונה מנוהלים (MIG). כדי לעשות את זה, צריך לציין קובץ אימג' של קונטיינר ופרמטרים של הגדרות כשיוצרים מכונה וירטואלית או תבנית של הגדרות מכונה.

במאמר הזה מוסבר על אפשרויות ההגדרה להפעלת קונטיינרים במכונות ב-Compute Engine.

לפני שמתחילים

כשיוצרים מכונה או תבנית של הגדרות מכונה לשימוש בפריסת קונטיינרים במכונות וירטואליות ובקבוצות של מכונות מנוהלות, צריך לציין את הגדרות הקונטיינר באמצעות המסוף Google Cloud או Google Cloud CLI.

בקטעים הבאים מוסבר איך להגדיר קונטיינרים במכונות וירטואליות, אבל אפשר גם להגדיר את האפשרויות הבאות כשיוצרים תבנית של הגדרות מכונה. משתמשים במסוף Google Cloud או ב-Google Cloud CLI כדי להגדיר אפשרויות למכונות וירטואליות בתבנית של הגדרות מכונה.

אפשר להשתמש בפקודות docker run כדי להגדיר קונטיינר במכונה וירטואלית שמריצה מערכת הפעלה שמותאמת לקונטיינרים, או לציין את הפקודה docker run בסקריפט לטעינה בזמן ההפעלה כדי ליצור ולהגדיר מכונה וירטואלית. מידע נוסף זמין במאמר שימוש בסקריפטים לטעינה בזמן ההפעלה כדי לפרוס קונטיינרים במכונות וירטואליות.

ציון מדיניות הפעלה מחדש

אפשר להגדיר מדיניות הפעלה מחדש כדי לציין אם להפעיל מחדש קונטיינר ביציאה. מדיניות ברירת המחדל היא תמיד להפעיל מחדש. אפשר גם להגדיר את המדיניות כך שההפעלה תתבצע מחדש אם היא תיכשל, או שהיא לא תתבצע מחדש אף פעם.

docker run

משתמשים בדגל --restart של הפקודה docker run. ניסיונות חוזרים להפעלה מחדש של קונטיינר נובעים מההתנהגות שמוגדרת כברירת מחדל ב-Docker, כפי שמפורט בהפניה ל-Docker --restart.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בקטע Restart policy, בוחרים את מדיניות ההפעלה מחדש של הקונטיינר.
    3. כדי לאשר את פרטי המאגר, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

gcloud

משתמשים בדגל --container-restart-policy כדי לציין מדיניות להפעלה מחדש של קונטיינר:

  • always (ברירת מחדל)
  • on-failure
  • never

בדוגמה הבאה מופעל קונטיינר עם 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.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בוחרים באפשרות Run as privileged (הפעלה עם הרשאות).
    3. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

gcloud

משתמשים בדגל --container-privileged כדי להריץ קונטיינר עם הרשאת זמן ריצה. בדוגמה הבאה מפעילים קונטיינר של busybox במצב הרשאה:

gcloud compute instances create-with-container busybox-vm \
  --container-image docker.io/busybox:1.27 \
  --container-privileged

כדי לעדכן קונטיינר ב-VM, משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-privileged. כדי להשבית את מצב ההרשאות, משתמשים בדגל --no-container-privileged.

הקצאת מאגר ל-STDIN בזמן הריצה של הקונטיינר

אפשר להקצות מאגר נתונים זמני ל-STDIN בזמן הריצה של הקונטיינר כדי לשמור על הזרם STDIN פתוח בקונטיינר. אם לא מגדירים את הערך הזה, קריאות מ-STDIN במאגר תמיד יחזירו EOF.

בנוסף להקצאת פסאודו-TTY, צריך להשאיר את הזרם STDIN פתוח כדי ליצור מעטפת אינטראקטיבית במאגר וכדי שהמאגר יקבל את הקלט הסטנדרטי שלו מצינור.

docker run

משתמשים בדגל --interactive (-i) של הפקודה docker run. מידע נוסף זמין במאמרי העזרה בנושא הדגל --interactive.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בוחרים באפשרות הקצאת מאגר זמני ל-STDIN.
    3. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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

כדי להגדיר מעטפת אינטראקטיבית בקונטיינר, צריך להקצות לו pseudo-TTY (וגם להקצות מאגר נתונים זמני ל-STDIN).

docker run

משתמשים בדגל --tty (-t) של הפקודה docker run. מידע נוסף זמין בדגל --tty.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בוחרים באפשרות הקצאת פסאודו-TTY.
    3. כדי לאשר את פרטי המאגר, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם לקובץ האימג' של הקונטיינר.
    2. בשדה Command (פקודה), מזינים פקודה אחת שניתנת להפעלה ללא פרמטרים – לדוגמה, uptime.
    3. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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 של הקונטיינר.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בקטע Arguments (ארגומנטים), לוחצים על Add argument (הוספת ארגומנט).
    3. מזינים ארגומנט אחד לכל תיבה.
    4. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בקטע Environment variables (משתני סביבה), לוחצים על Add variable (הוספת משתנה).
    3. מוסיפים או מסירים משתני סביבה לפי הצורך, אחד בכל שורה.
    4. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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 מעלה ספריית מארח כנפח נתונים.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בקטע Volume mounts (חיבורים של אמצעי אחסון), לוחצים על Add volume (הוספת אמצעי אחסון).
    3. ברשימה Volume type, בוחרים באפשרות Directory ומבצעים את הפעולות הבאות:

      • בשדה Mount path, מציינים נתיב טעינה במבנה של ספריית מאגר שבו רוצים לטעון ספריית מארח.
      • בשדה Host path, מציינים את נתיב המארח לספריית המארח שרוצים לטעון.
      • ברשימה Mode, מציינים אם להעלות את הספרייה במצב קריאה/כתיבה או במצב קריאה-בלבד.
    4. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.

  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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 כדי לטעון ספריית מארח במצב קריאה בלבד.

כדי לעדכן את נקודות ה-mount של ספריות המארח בקונטיינר, משתמשים בפקודה 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, אמצעי האחסון והנתונים שלו נשמרים כשהקונטיינר מופעל מחדש, ונמחקים רק כשהמכונה הווירטואלית מופעלת מחדש.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בקטע Volume mounts (חיבורים של אמצעי אחסון), לוחצים על Add volume (הוספת אמצעי אחסון).
    3. ברשימה סוג נפח האחסון, בוחרים באפשרות TmpFS.
    4. בשדה Mount path, מציינים נתיב להרכבה במבנה של ספריית קונטיינר שבה רוצים להרכיב נפח TmpFS.
    5. ברשימה Mode, מציינים אם לטעון את אמצעי האחסון של TmpFS במצב קריאה/כתיבה או במצב קריאה בלבד.
    6. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

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
 

משתמשים בפקודה gcloud compute instances update-container עם הדגל --container-mount-tmpfs כדי לעדכן את נקודות העגינה של tmpfs בקונטיינר. כדי להסיר נקודת טעינה של tmpfs עם נתיב הטעינה שצוין, משתמשים בדגל --remove-container-mounts כשמעדכנים. בדוגמה הבאה מוסר הטעינה tmpfs באמצעות mount-path=/cache:

gcloud compute instances update-container busybox-vm \
  --remove-container-mounts /cache

אם נתיב הטעינה שצוין לא קיים, המערכת מתעלמת ממנו בלי להציג הודעה.

התקנת דיסק אחסון מתמיד (persistent disk) כנפח נתונים

ב-מערכת הפעלה שמותאמת לקונטיינרים 69 או בגרסה מתקדמת יותר, אפשר לטעון דיסקים לאחסון מתמיד ממכונה וירטואלית מארחת לקונטיינר.

דרישות מוקדמות

  • בדיסק צריכה להיות מערכת קבצים ext4 או שלא תהיה בו מערכת קבצים. אם אין מערכת קבצים ראשונית, סוכן הפעלת הקונטיינר (konlet) מעצב את הדיסק ל-ext4, ונתמכות רק פעולות קריאה/כתיבה של קובץ מצורף והרכבה.
  • הדיסק צריך להיות מצורף למכונה הווירטואלית.
  • יש תמיכה גם במכשירים ללא מחיצות וגם במחיצות. במקרים של טעינת מחיצות, הדיסק לא יכול להיות ריק, הוא חייב להכיל טבלת מחיצות קיימת.

המסוף

  1. נכנסים לדף Create an instance.

    כניסה לדף Create an instance

  2. בקטע Container (מאגר תגים), לוחצים על Deploy container (פריסת מאגר תגים).

  3. בדף Configure container, מבצעים את הפעולות הבאות:

    1. מציינים שם של קובץ אימג' של קונטיינר.
    2. בקטע Volume mounts (חיבורים של אמצעי אחסון), לוחצים על Add volume (הוספת אמצעי אחסון).
    3. ברשימה סוג נפח האחסון, בוחרים באפשרות דיסק.
    4. בשדה Mount path, מציינים נתיב במבנה הספריות של הקונטיינר שבו רוצים לצרף את דיסק האחסון המתמיד (persistent disk).
    5. ברשימה Disk name, בוחרים דיסק קיים להרכבה.
    6. בשדה מחיצה, מציינים את מספר המחיצה להרכבה אם בדיסק יש טבלת מחיצות. אם בדיסק אין מחיצות, משאירים את השדה הזה ריק.
    7. ברשימה Mode, מציינים אם להעלות את הספרייה במצב קריאה/כתיבה או במצב קריאה בלבד.
    8. כדי לאשר את פרטי מאגר התגים, לוחצים על בחירה.
  4. ממשיכים בתהליך יצירת המכונה הווירטואלית.

gcloud

כדי לטעון דיסק אחסון מתמיד (persistent disk) בקונטיינר, משתמשים בפקודה 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 לא קיים, המערכת מתעלמת ממנו בלי להציג הודעה.

פרסום יציאות של מאגרים

מכונות וירטואליות עם קונטיינרים משתמשות במצב רשת מארחת, שבו הקונטיינר משתף את מקבץ הרשת (network stack) של המארח, וכל הממשקים מהמארח זמינים לקונטיינר.

יציאות הקונטיינר ממופות באופן ישיר ליציאות של המכונה הווירטואלית המארחת. לדוגמה, יציאה 80 של קונטיינר ממופה ליציאה 80 של מכונת ה-VM המארחת. ‫Compute Engine לא תומך בסימון של פרסום יציאה (-p), ולא צריך לציין אותו כדי שהמיפוי יפעל.

כדי לפרסם את היציאות של קונטיינר, צריך להגדיר כללים של חומת אש כדי לאפשר גישה ליציאות של המכונה הווירטואלית המארחת. הגישה ליציאות המתאימות של הקונטיינר מתבצעת באופן אוטומטי, בהתאם לכללים של חומת האש.

דוגמה: פרסום יציאה 80 עבור מאגר NGINX

docker run

מגדירים את הדגל --network="host" כשמשתמשים בפקודה docker run. מידע נוסף על הגדרות רשת של מאגר תגים ומצב מארח

gcloud

בדוגמה הבאה מוסבר איך ליצור מכונה וירטואלית עם קונטיינר NGINX ולאפשר תנועה ליציאה 80 של הקונטיינר.

  1. יוצרים מכונה וירטואלית עם קונטיינר NGINX:

    gcloud compute instances create-with-container nginx-vm \
    --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \
    --tags http-server
    

    הקונטיינר חולק את מקבץ הרשת (network stack) של המכונה הווירטואלית המארחת, ויציאה 80 של הקונטיינר מתפרסמת ביציאה 80 של המכונה הווירטואלית המארחת. התג http-server משמש כתג יעד לכלל חומת האש, שנוצר בשלב הבא.

  2. יוצרים כלל של חומת אש שמאפשר חיבורים ליציאה 80 של מופע המכונה הווירטואלית. כלל חומת האש הבא מאפשר חיבורי HTTP למכונות וירטואליות עם התג http-server.

    gcloud compute firewall-rules create allow-http \
    --allow tcp:80 --target-tags http-server
    

    הקונטיינר מתחיל לקבל תנועה באופן אוטומטי ביציאה 80. לא צריך לבצע הגדרות נוספות.

    אפשר ליצור כללי חומת אש לשילובים של פרוטוקול:יציאה של המכונה הווירטואלית המארחת, כשהפרוטוקול הוא tcp או udp. הכללים האלה קובעים למעשה את הגישה מחוץ למכונה הווירטואלית ליציאות המתאימות של מאגר התגים.

המאמרים הבאים