Potresti dover installare pacchetti o strumenti aggiuntivi su Container-Optimized OS
per alcune attività, come il debug. Ad esempio, per risolvere i problemi di connettività dei nodi,
installa tcpdump
nella cassetta degli attrezzi.
Sebbene Container-Optimized OS non
includi un gestore di pacchetti, puoi usare lo strumento
strumenti
per installare eventuali pacchetti o strumenti aggiuntivi richiesti. 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 chroot Debian
completamente gestito di Google Cloud. Quando richiami /usr/bin/toolbox
, vengono eseguiti i seguenti comandi:
docker pull
edocker create
per configurare l'ambiente. Si tratta solo di esegui la prima volta che richiami/usr/bin/toolbox
.systemd-nspawn
per eseguire il comando specificato o (in assenza di comandi) fornisce una shell
toolbox
ha 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 chiama. Esecuzionesudo toolbox
lo configura perroot
utente. - L'ambiente
toolbox
viene creato in/var/lib/toolbox
ed è e sono permanenti tra i riavvii. - Puoi accedere alle sezioni del file system radice, come la home page dell'utente
dall'interno dell'ambiente
toolbox
.
Personalizzazione degli strumenti per il deployment
Nei seguenti esempi, presupponiamo che il tuo nome utente sia USER
e
Il nome dell'istanza di Container-Optimized OS è cos-dev
.
Puoi personalizzare l'immagine Docker utilizzata da toolbox
, nonché i percorsi
disponibile 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 Docker da utilizzare.gcr.io/cos-cloud/toolbox
predefinito viene fornito con alcuni degli strumenti comuni come Google Cloud CLI preinstallato. - La variabile
TOOLBOX_BIND
specifica i percorsi da rootfs da effettuare disponibili nell'ambiente toolbox.
Per cambiare le impostazioni predefinite, modifica il file /etc/default/toolbox
oppure
specificare nuovi valori per le variabili in ${HOME}/.toolboxrc
per i
utente. Ad esempio, supponendo che tu voglia che toolbox
utilizzi fedora:latest
come
al suo container, puoi eseguire questi 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, toolbox non riesce a estrarre un'immagine personalizzata toolbox. Alla soluzione alternativa
questo problema, crea un riquadro tar dell'immagine Docker con strumenti personalizzati ed esportalo
${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 da toolbox
Dopo aver richiamato l'utilità toolbox
per avviare la shell, puoi usare
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 comandi al suo interno. Puoi semplicemente
aggiungi il prefisso toolbox
ai tuoi comandi. Ad esempio, per installare ed eseguire
strace
per tracciare l'esecuzione del daemon Docker, puoi eseguire l'operazione
seguenti:
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 gcloud CLI può accedere solo alle risorse che L'istanza VM è autorizzata ad accedere. Leggi documentazione di Compute Engine per Scopri di più sul provisioning di istanze VM con accesso ad altre risorse.
Leggi la documentazione di Google Cloud CLI per Scopri di più sull'uso di gcloud CLI.
Inserire e rimuovere i file dagli strumenti
Il file system radice dell'host è accessibile all'interno di toolbox
tramite
Percorso /media/root
. Nell'host, la directory root di toolbox
è accessibile
seguendo questo percorso:
/var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
dove USER
è il tuo nome utente e VERSION
è il numero di versione toolbox
(ad esempio, v20220722
).
I seguenti esempi mostrano come inserire 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 spazio su disco utilizzato da toolbox
L'installazione di toolbox utilizza circa 2-3 GB di disco
in /var
(l'utilizzo del disco varia in base alla versione di Container-Optimized OS). A
di spazio libero su disco utilizzato da toolbox, esegui le operazioni seguenti a seconda del tuo
Versione Container-Optimized OS:
Traguardo 89 e 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 successivi
# 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
.