Potrebbe essere necessario installare pacchetti o strumenti aggiuntivi su Container-Optimized OS per determinate attività, ad esempio il debug. Ad esempio, puoi eseguire il debug dei problemi di connettività dei nodi installando tcpdump
in toolbox.
Sebbene Container-Optimized OS non includa un gestore di pacchetti, puoi utilizzare l'utilità Strumenti preinstallata per installare eventuali pacchetti o strumenti aggiuntivi di cui hai bisogno. L'utilizzo di /usr/bin/toolbox
è il metodo preferito per installare ed eseguire strumenti di debug una tantum.
/usr/bin/toolbox
fornisce essenzialmente una shell in un ambiente Debian simile a chroot. Quando richiami /usr/bin/toolbox
, esegue i seguenti comandi:
docker pull
edocker create
per configurare l'ambiente. Queste vengono eseguite solo la prima volta che richiami/usr/bin/toolbox
.systemd-nspawn
per eseguire il comando dato o (in assenza di comandi) fornisce una shell
toolbox
ha altre proprietà da tenere presente:
- La chiamata di
toolbox
dopo la prima chiamata non richiede un daemon Docker funzionante, né comporta l'overhead di rete/disco. - L'ambiente
toolbox
viene configurato una volta per ogni utente che lo richiama. Se viene eseguitosudo toolbox
, viene configurato per l'utenteroot
. - L'ambiente
toolbox
viene creato nel campo/var/lib/toolbox
e dura da tutti i riavvii. - Puoi accedere alle sezioni del file system radice, come le directory della home page degli utenti, dall'interno dell'ambiente
toolbox
.
Personalizzazione degli strumenti per l'implementazione
Negli esempi seguenti, supponiamo che il tuo nome utente sia USER
e che il nome dell'istanza di Container-Optimized OS sia cos-dev
.
Puoi personalizzare l'immagine Docker utilizzata da toolbox
, nonché i percorsi
disponibili per toolbox
nel file system radice. Queste impostazioni si trovano nel
file /etc/default/toolbox
. In genere, il file /etc/default/toolbox
predefinito è 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. Il valore predefinitogcr.io/cos-cloud/toolbox
include alcuni degli strumenti comuni, come Google Cloud CLI, preinstallati. - La variabile
TOOLBOX_BIND
specifica i percorsi da rootfs da rendere disponibili nell'ambiente toolbox.
Per cambiare 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 container, 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
Nel Milestone 93, la casella degli strumenti non riuscirà a estrarre un'immagine personalizzata della toolbox. Per risolvere questo problema, crea un'immagine tar tar Docker della casella degli strumenti personalizzata ed esportala tramite file ${HOME}/.toolboxrc
o /etc/default/toolbox
.
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE_TARBALL=[docker image tar ball]" > "${HOME}/.toolboxrc" USER@cos-dev ~ $ toolboxIl 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=[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
Installazione ed esecuzione di strumenti da toolbox
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 necessario inserire toolbox
per eseguire i comandi al suo interno. Puoi semplicemente
precedere i tuoi comandi con toolbox
. Ad esempio, per installare ed eseguire l'utilità strace
al fine di tenere traccia dell'esecuzione del daemon Docker, puoi:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
Google Cloud CLI è preinstallato 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 l'istanza VM è autorizzata ad accedere. Leggi la documentazione di Compute Engine per ulteriori informazioni 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.
Portare i file dentro e fuori dagli strumenti
Il file system radice dell'host è accessibile all'interno di toolbox
tramite il percorso /media/root
. Nell'host, la directory radice 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 trasferire file da e verso 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
Liberare lo spazio su disco utilizzato da toolbox
L'installazione di toolbox consuma circa 2-3 GB di spazio su disco in /var
(l'utilizzo del disco varia a seconda della versione di Container-Optimized OS). Per liberare spazio su disco utilizzato da toolbox, esegui le attività seguenti a seconda della versione Container-Optimized OS:
Traguardo 89 e versioni precedenti
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
docker image rm $IMAGE_PATH:$TAG
Puoi eseguire docker image ls
per determinare questi valori. Ad esempio,
IMAGE_PATH=gcr.io/cos-cloud/toolbox
e
TAG=v20220722
.
Traguardo 93 e versioni successive
# 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
.