Anda mungkin perlu menginstal paket atau alat tambahan di Container-Optimized OS
untuk tugas tertentu, seperti proses debug. Misalnya, debug masalah konektivitas node dengan
menginstal tcpdump
di toolbox.
Meskipun Container-Optimized OS tidak
menyertakan pengelola paket, Anda dapat menggunakan utilitas
toolbox
yang telah diinstal sebelumnya untuk menginstal paket atau alat tambahan yang diperlukan. Menggunakan
/usr/bin/toolbox
adalah metode yang lebih disukai untuk menginstal dan menjalankan alat
proses debug satu kali.
/usr/bin/toolbox
pada dasarnya memberi Anda shell di lingkungan mirip chroot
Debian. Saat Anda memanggil /usr/bin/toolbox
, perintah berikut akan dijalankan:
docker pull
dandocker create
untuk menyiapkan lingkungan. Ini hanya berjalan saat pertama kali Anda memanggil/usr/bin/toolbox
.systemd-nspawn
untuk menjalankan perintah yang diberikan atau (jika tidak ada perintah apa pun) memberi Anda shell
toolbox
memiliki beberapa properti lain yang perlu diingat:
- Memanggil
toolbox
setelah pemanggilan pertama tidak memerlukan daemon Docker yang berfungsi, atau tidak menimbulkan overhead jaringan/disk. - Lingkungan
toolbox
disiapkan satu kali untuk setiap pengguna yang memanggilnya. Menjalankansudo toolbox
akan menyiapkannya untuk penggunaroot
. - Lingkungan
toolbox
dibuat di bagian/var/lib/toolbox
dan persisten di seluruh mulai ulang. - Anda dapat mengakses bagian sistem file root, seperti direktori rumah
pengguna, dari dalam lingkungan
toolbox
.
Menyesuaikan toolbox untuk deployment
Dalam contoh berikut, kami mengasumsikan bahwa nama pengguna Anda adalah USER
dan nama instance Container-Optimized OS Anda adalah cos-dev
.
Anda dapat menyesuaikan image Docker yang digunakan toolbox
, serta jalur
yang tersedia untuk toolbox
di sistem file root. Setelan ini berada di
file /etc/default/toolbox
. File /etc/default/toolbox
default biasanya
menyerupai hal berikut:
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}
- Variabel
TOOLBOX_DOCKER_IMAGE
danTOOLBOX_DOCKER_TAG
menentukan image Docker yang akan digunakan.gcr.io/cos-cloud/toolbox
default disertakan dengan beberapa alat umum seperti Google Cloud CLI yang telah diinstal sebelumnya. - Variabel
TOOLBOX_BIND
menentukan jalur dari rootfs yang akan tersedia di dalam lingkungan toolbox.
Untuk mengubah setelan default, ubah file /etc/default/toolbox
, atau
tentukan nilai baru untuk variabel di ${HOME}/.toolboxrc
bagi pengguna
yang sesuai. Misalnya, dengan asumsi bahwa Anda ingin toolbox
menggunakan fedora:latest
sebagai
penampungnya, Anda dapat menjalankan perintah berikut:
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
Pada Milestone 93, toolbox akan gagal mengambil image toolbox kustom. Untuk mengatasi masalah ini, build tar ball image docker toolbox kustom dan ekspor melalui file ${HOME}/.toolboxrc
atau file /etc/default/toolbox
.
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE_TARBALL=[docker image tar ball]" > "${HOME}/.toolboxrc" USER@cos-dev ~ $ 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=[location/to/tarball] 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
Menginstal dan menjalankan alat dari toolbox
Setelah memanggil utilitas toolbox
untuk memulai shell, Anda dapat menggunakan
apt-get
di dalam penampung yang dihasilkan untuk menginstal paket. Contoh:
# 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
Anda tidak selalu harus memasukkan toolbox
untuk menjalankan perintah di dalamnya. Anda cukup
menambahkan awalan toolbox
ke perintah. Misalnya, untuk menginstal dan menjalankan
utilitas strace
guna melacak eksekusi daemon Docker, Anda dapat melakukan
hal berikut:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
Google Cloud CLI sudah diinstal sebelumnya di 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
...
Perlu diingat bahwa gcloud CLI hanya dapat mengakses resource yang diizinkan untuk diakses oleh instance VM. Baca dokumentasi Compute Engine untuk mempelajari lebih lanjut cara menyediakan instance VM dengan akses ke resource lain.
Baca dokumentasi Google Cloud CLI untuk mempelajari lebih lanjut cara menggunakan gcloud CLI.
Memasukkan dan mengeluarkan file dari toolbox
Sistem file root host dapat diakses di dalam toolbox
melalui
jalur /media/root
. Di host, direktori root toolbox
dapat diakses
melalui jalur berikut:
/var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
dengan USER
adalah nama pengguna Anda dan VERSION
adalah nomor versi toolbox
(misalnya, v20220722
).
Contoh berikut menunjukkan cara memasukkan dan mengeluarkan file dari 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
Membersihkan ruang disk yang digunakan oleh toolbox
Penginstalan toolbox menggunakan sekitar 2-3 GB ruang
disk di /var
(penggunaan disk bervariasi dengan versi Container-Optimized OS). Untuk
mengurangi ruang disk yang digunakan oleh toolbox, lakukan tugas berikut bergantung pada
versi Container-Optimized OS Anda:
Tonggak pencapaian 89 dan yang lebih lama
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
docker image rm $IMAGE_PATH:$TAG
Anda dapat menjalankan docker image ls
untuk menentukan nilai ini. Misalnya,
IMAGE_PATH=gcr.io/cos-cloud/toolbox
dan
TAG=v20220722
.
Tonggak pencapaian 93 dan yang lebih baru
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
Anda dapat menjalankan sudo ctr images ls -q
untuk menentukan nilai ini. Contoh, IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722
.