Potresti dover installare pacchetti o strumenti aggiuntivi sul sistema operativo ottimizzato per i container per determinate attività, come il debug. Ad esempio, per risolvere i problemi di connettività dei nodi,
installa tcpdump
nella cassetta degli attrezzi.
Anche se Container-Optimized OS non include un gestore dei pacchetti, puoi utilizzare l'utility preinstallata toolbox 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 simile a chroot di Debian. Quando richiami /usr/bin/toolbox
, vengono eseguiti i seguenti comandi:
docker pull
edocker create
per configurare l'ambiente. Vengono eseguiti solo la prima volta che richiami/usr/bin/toolbox
.systemd-nspawn
per eseguire il comando specificato o (in assenza di un comando) ti fornisce una shell
toolbox
ha alcune altre proprietà da tenere presenti:
- L'invocazione di
toolbox
dopo la prima non richiede un daemon Docker funzionante né comporta alcun sovraccarico di rete/disco. - L'ambiente
toolbox
viene configurato una volta per ogni utente che lo richiama. Se eseguisudo toolbox
, la configurazione viene eseguita per l'utenteroot
. - L'ambiente
toolbox
viene creato in/var/lib/toolbox
ed è persistente dopo i riavvii. - Puoi accedere alle sezioni del file system principale, ad esempio le directory home degli utenti, dall'interno dell'ambiente
toolbox
.
Personalizzazione della cassetta degli attrezzi per il deployment
Nei seguenti esempi, si presume che il tuo nome utente sia USER
e 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 principale. 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 viene fornito con alcuni degli strumenti comuni, come Google Cloud CLI, preinstallati. - La variabile
TOOLBOX_BIND
specifica i percorsi da rootfs da rendere disponibili all'interno dell'ambiente della cassetta degli attrezzi.
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
Nel Milestone 93, la cassetta degli attrezzi non riesce a estrarre l'immagine della cassetta degli attrezzi personalizzata. Per risolvere il problema, crea un file tar dell'immagine Docker della cassetta degli attrezzi personalizzata ed esportalo tramite il file ${HOME}/.toolboxrc
o /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
Installazione ed esecuzione di strumenti dalla cassetta degli attrezzi
Dopo aver invocato l'utilità toolbox
per avviare la shell, puoi utilizzare apt-get
all'interno del contenitore 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 comandi al suo interno. Puoi semplicemente anteporre toolbox
ai 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 è preinstallato nella cassetta degli attrezzi:
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 la CLI gcloud può accedere solo alle risorse a cui l'istanza VM è autorizzata ad accedere. Leggi la documentazione di Compute Engine per scoprire di più sul provisioning di istanze VM con accesso ad altre risorse.
Leggi la documentazione di Google Cloud CLI per scoprire di più sull'utilizzo di gcloud CLI.
Importare e esportare file dalla cassetta degli attrezzi
Il file system principale dell'host è accessibile all'interno di toolbox
tramite il percorso /media/root
. Sul host, la home directory 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
).
Gli esempi riportati di seguito mostrano come importare e esportare file in 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
Pulizia dello spazio su disco utilizzato dalla cassetta degli attrezzi
L'installazione della cassetta degli attrezzi richiede 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, svolgi le seguenti attività a seconda della versione di 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
.