יכול להיות שתצטרכו להתקין חבילות או כלים נוספים במערכת ההפעלה שמותאמת לקונטיינרים כדי לבצע משימות מסוימות, כמו ניפוי באגים. לדוגמה, אפשר לפתור בעיות בחיבור של הצומת על ידי התקנת tcpdump בארגז הכלים.
למרות שמערכת הפעלה שמותאמת לקונטיינרים לא כוללת כלי לניהול חבילות, אפשר להשתמש בכלי השירות toolbox שהותקן מראש כדי להתקין חבילות או כלים נוספים שנדרשים לכם. השיטה המועדפת להתקנה ולהפעלה של כלי ניפוי באגים חד-פעמיים היא שימוש ב-/usr/bin/toolbox.
/usr/bin/toolbox בעצם מספק לכם מעטפת בסביבה שדומה ל-Debian chroot. כשמפעילים את /usr/bin/toolbox, הוא מריץ את הפקודות הבאות:
-
docker pullו-docker createכדי להגדיר את הסביבה. הפעולות האלה מופעלות רק בפעם הראשונה שמפעילים את/usr/bin/toolbox. -
systemd-nspawnכדי להריץ את הפקודה שצוינה או (אם לא צוינה פקודה) כדי לספק לכם מעטפת
ל-toolbox יש עוד כמה מאפיינים שכדאי לזכור:
- הפעלת
toolboxאחרי ההפעלה הראשונה לא דורשת דמון Docker פעיל, ולא גורמת לתקורה של רשת או דיסק. - סביבת
toolboxמוגדרת פעם אחת לכל משתמש שמפעיל אותה. הפעלתsudo toolboxמגדירה אותו עבור משתמשroot. - סביבת
toolboxנוצרת ב-/var/lib/toolboxוהיא נשמרת גם אחרי הפעלה מחדש. - אתם יכולים לגשת לחלקים של מערכת הקבצים הבסיסית, כמו ספריות ביתיות של משתמשים, מתוך סביבת
toolbox.
התאמה אישית של ארגז הכלים לפריסה
בדוגמאות הבאות, נניח ששם המשתמש הוא USER ושם המופע של מערכת הפעלה שמותאמת לקונטיינרים הוא cos-dev.
אפשר להתאים אישית את קובץ האימג' של Docker שבו משתמשים ב-toolbox, וגם את הנתיבים שזמינים ל-toolbox במערכת הקבצים של ה-root. ההגדרות האלה נמצאות בקובץ /etc/default/toolbox. קובץ /etc/default/toolbox שמוגדר כברירת מחדל בדרך כלל נראה כך:
USER@cos-dev ~ $ cat /etc/default/toolbox
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
TOOLBOX_DOCKER_IMAGE="gcr.io/cos-cloud/toolbox"
TOOLBOX_DOCKER_TAG="v20220722"
TOOLBOX_BIND="--bind=/:/media/root/ --bind=/mnt/disks/:/media/root/mnt/disks/ --bind=/var/:/media/root/var/ --bind=/home:/media/root/home/ --bind=/etc/resolv.conf:/etc/resolv.conf"
: ${USER:=root}
- המשתנים
TOOLBOX_DOCKER_IMAGEו-TOOLBOX_DOCKER_TAGמציינים את קובץ אימג' של Docker שבו יש להשתמש.gcr.io/cos-cloud/toolboxכברירת מחדל, חלק מהכלים הנפוצים כמו Google Cloud CLI מותקנים מראש. - המשתנה
TOOLBOX_BINDמציין את הנתיבים מ-rootfs שיהיו זמינים בסביבת ארגז הכלים.
כדי לשנות את הגדרות ברירת המחדל, משנים את הקובץ /etc/default/toolbox או מציינים ערכים חדשים למשתנים בקובץ ${HOME}/.toolboxrc עבור המשתמש המתאים. לדוגמה, אם רוצים ש-toolbox ישתמש ב-fedora:latest כקונטיינר שלו, אפשר להריץ את הפקודות הבאות:
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE=docker.io/library/fedora" > "${HOME}/.toolboxrc"
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_TAG=latest" >> "${HOME}/.toolboxrc"
USER@cos-dev ~ $ toolbox
אפשר לשנות את הקובץ /etc/default/toolbox כמו בדוגמה הבאה.
USER@cos-dev ~ $ cat /etc/default/toolbox
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
TOOLBOX_DOCKER_IMAGE="gcr.io/cos-cloud/toolbox"
TOOLBOX_DOCKER_TAG="v20220722"
TOOLBOX_DOCKER_IMAGE_TARBALL=<var>[location/to/tarball]</var>
TOOLBOX_BIND="--bind=/:/media/root/ --bind=/mnt/disks/:/media/root/mnt/disks/ --bind=/var/:/media/root/var/ --bind=/home:/media/root/home/"
: ${USER:=root}
USER@cos-dev ~ $ toolbox
התקנה והפעלה של כלים מארגז הכלים
אחרי שמפעילים את כלי השירות toolbox כדי להפעיל את המעטפת, אפשר להשתמש ב-apt-get בתוך הקונטיינר שנוצר כדי להתקין חבילות. לדוגמה:
# Inside the toolbox shell
USER@cos-dev ~ $ toolbox
root@cos-dev:~# apt-get update && apt-get install -y htop psmisc
root@cos-dev:~# htop
root@cos-dev:~# pstree -p
root@cos-dev:~# exit
לא תמיד צריך להזין את הפקודה toolbox כדי להריץ פקודות ב-Cloud Shell. אפשר להוסיף את הקידומת toolbox לפקודות. לדוגמה, כדי להתקין ולהריץ את כלי השירות strace כדי לעקוב אחר ההרצה של Docker daemon, אפשר לעשות את הפעולות הבאות:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
Google Cloud CLI מותקן מראש ב-toolbox:
USER@cos-dev ~ $ toolbox
root@cos-dev:~# which gcloud
/google-cloud-sdk/bin/gcloud
# View installed components
root@cos-dev:~# gcloud components list
Your current gcloud CLI version is: 287.0.0
The latest available version is: 295.0.0
...
חשוב לזכור ש-CLI של gcloud יכול לגשת רק למשאבים שלמכונת ה-VM יש הרשאה לגשת אליהם. כדי לקבל מידע נוסף על הקצאת מכונות וירטואליות עם גישה למשאבים אחרים, אפשר לקרוא את מאמרי העזרה בנושא Compute Engine.
כדי לקבל מידע נוסף על השימוש ב-CLI של gcloud, אפשר לעיין במסמכי התיעוד של Google Cloud CLI.
העברת קבצים אל ארגז הכלים וממנו
אפשר לגשת למערכת הקבצים הבסיסית של המארח בתוך toolbox דרך הנתיב /media/root. במארח, אפשר לגשת לתיקיית השורש של toolbox דרך הנתיב הבא:
/var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
כאשר USER הוא שם המשתמש שלכם ו-VERSION הוא מספר הגרסה של toolbox (לדוגמה, v20220722).
בדוגמאות הבאות אפשר לראות איך מעבירים קבצים אל toolbox וממנו:
# Access the host filesystem inside the toolbox
USER@cos-dev ~ $ toolbox
root@cos-dev:~# ls /media/root
bin boot dev etc home lib lib64 ...
root@cos-dev:~# cp /media/root/home/USER/some-file .
# Access toolbox directory from the host
USER@cos-dev ~ $ sudo cp some-file /var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-v20220722/root
# Run a command inside toolbox and save its output in your home directory
USER@cos-dev ~ $ toolbox strace -o /media/root/$HOME/ls.strace ls
USER@cos-dev ~ $ more $HOME/ls.strace
פינוי מקום בדיסק שמשמש את ארגז הכלים
התקנת ארגז הכלים צורכת כ-2-3GB של שטח דיסק ב-/var (השימוש בדיסק משתנה בהתאם לגרסת מערכת הפעלה שמותאמת לקונטיינרים). כדי לפנות שטח אחסון בדיסק שמשמש את ארגז הכלים, מבצעים את המשימות הבאות בהתאם לגרסה של מערכת ההפעלה שמותאמת לקונטיינרים:
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
אפשר להריץ את הפקודה sudo ctr images ls -q כדי לקבוע את הערך הזה. לדוגמה, IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722.