Per alcune attività, come il debug, potresti dover installare pacchetti o strumenti aggiuntivi su Container-Optimized OS. Ad esempio, esegui il debug dei problemi di connettività dei nodi
installando tcpdump
nella casella degli strumenti.
Sebbene Container-Optimized OS non includa un gestore di pacchetti, puoi utilizzare l'utilità toolbox preinstallata per installare eventuali pacchetti o strumenti aggiuntivi necessari. L'utilizzo di
/usr/bin/toolbox
è il metodo preferito per installare ed eseguire strumenti di debug
una tantum.
/usr/bin/toolbox
ti fornisce essenzialmente una shell in un ambiente
simile a chroot di Debian. Quando richiami /usr/bin/toolbox
, vengono eseguiti i seguenti comandi:
docker pull
edocker create
per configurare l'ambiente. Questi vengono eseguiti solo la prima volta che richiami/usr/bin/toolbox
.systemd-nspawn
per eseguire il comando specificato o (in assenza di qualsiasi comando) fornisce una shell
toolbox
ha altre proprietà da tenere a mente:
- L'invocazione di
toolbox
dopo la prima non richiede un daemon Docker funzionante e non comporta alcun sovraccarico di rete o disco. - L'ambiente
toolbox
viene configurato una volta per ogni utente che lo richiama. Esecuzionesudo toolbox
lo configura per l'utenteroot
. - L'ambiente
toolbox
viene creato in/var/lib/toolbox
ed è persistente dopo i riavvii. - Puoi accedere a sezioni del file system principale, ad esempio le directory home degli utenti, dall'interno dell'ambiente
toolbox
.
Personalizzare la casella degli strumenti per il deployment
Negli esempi seguenti, supponiamo che il tuo nome utente sia USER
e che il nome dell'istanza Container-Optimized OS sia cos-dev
.
Puoi personalizzare l'immagine Docker utilizzata da toolbox
, nonché i percorsi
disponibili per toolbox
nel file system root. Queste impostazioni si trovano nel file /etc/default/toolbox
. Il file /etc/default/toolbox
predefinito
in genere è simile al seguente:
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}
- Le variabili
TOOLBOX_DOCKER_IMAGE
eTOOLBOX_DOCKER_TAG
specificano l'immagine Docker da utilizzare.gcr.io/cos-cloud/toolbox
predefinito include alcuni strumenti comuni come Google Cloud CLI preinstallati. - La variabile
TOOLBOX_BIND
specifica i percorsi da rootfs da rendere disponibili all'interno dell'ambiente toolbox.
Per modificare le impostazioni predefinite, modifica il file /etc/default/toolbox
o
specifica nuovi valori per le variabili in ${HOME}/.toolboxrc
per l'utente
appropriato. Ad esempio, supponendo che tu voglia che toolbox
utilizzi fedora:latest
come
contenitore, puoi eseguire i seguenti comandi:
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
Il file /etc/default/toolbox
può essere modificato come mostrato di seguito.
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
Installare ed eseguire gli strumenti della casella degli strumenti
Dopo aver richiamato l'utilità toolbox
per avviare la shell, puoi utilizzare
apt-get
all'interno del container risultante per installare i pacchetti. Ad esempio:
# 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
Non sempre devi inserire toolbox
per eseguire i comandi. Puoi
anteporre toolbox
ai tuoi comandi. Ad esempio, per installare ed eseguire l'utilità
strace
per tracciare l'esecuzione del daemon Docker, puoi procedere
nel seguente modo:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
Google Cloud CLI è preinstallata in 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
...
Tieni presente che gcloud CLI può accedere solo alle risorse a cui la VM è autorizzata ad accedere. Leggi la documentazione di Compute Engine per scoprire di più sul provisioning delle istanze VM con accesso ad altre risorse.
Leggi la documentazione di Google Cloud CLI per scoprire di più sull'utilizzo di gcloud CLI.
Inserire e rimuovere file dalla casella degli strumenti
Il file system principale dell'host è accessibile all'interno di toolbox
tramite il percorso
/media/root
. Sull'host, la directory principale di toolbox
è accessibile
tramite il seguente percorso:
/var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
dove USER
è il tuo nome utente e VERSION
è il numero di versione di toolbox
(ad esempio, v20220722
).
I seguenti esempi mostrano come importare ed esportare file da 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
Pulire lo spazio su disco utilizzato da toolbox
L'installazione del toolbox consuma circa 2-3 GB di spazio
su disco in /var
(l'utilizzo del disco varia in base alla versione di Container-Optimized OS). Per
liberare spazio su disco utilizzato da toolbox, esegui le seguenti attività a seconda della versione di
Container-Optimized OS:
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
Puoi eseguire sudo ctr images ls -q
per determinare questo valore. Ad esempio,
IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722
.