Vous devrez peut-être installer des packages ou des outils supplémentaires sur Container-Optimized OS pour certaines tâches, telles que le débogage. Par exemple, déboguez les problèmes de connectivité des nœuds en installant tcpdump
dans Toolbox.
Bien que Container-Optimized OS n'inclue pas de gestionnaire de paquets, vous pouvez utiliser l'utilitaire préinstallé Toolbox pour installer les packages ou outils supplémentaires nécessaires. L'utilisation de /usr/bin/toolbox
est la méthode recommandée pour installer et exécuter des outils de débogage uniques.
/usr/bin/toolbox
fournit essentiellement une interface système dans un environnement Debian de type chroot. Lorsque vous appelez l'utilitaire /usr/bin/toolbox
, il exécute les commandes suivantes :
docker pull
etdocker create
pour configurer l'environnement. Ces commandes ne sont exécutées que la première fois que vous appelez/usr/bin/toolbox
.systemd-nspawn
pour exécuter la commande donnée ou (en l'absence de commande) fournir une interface système.
toolbox
a d'autres propriétés à garder à l'esprit :
- Appeler de nouveau
toolbox
après le premier appel ne nécessite pas de démon Docker opérationnel, et n'entraîne pas de surcharge réseau/disque. - L'environnement
toolbox
est configuré une fois pour chaque utilisateur qui l'appelle. L'exécution desudo toolbox
le configure pour l'utilisateurroot
. - L'environnement
toolbox
est créé sous/var/lib/toolbox
et est persistant après le redémarrage. - Vous pouvez accéder à des sections du système de fichiers racine, telles que les répertoires d'accueil des utilisateurs, à partir de l'environnement
toolbox
.
Personnaliser toolbox pour votre déploiement
Dans les exemples suivants, nous supposons que votre nom d'utilisateur est USER
et que votre nom d'instance Container-Optimized OS est cos-dev
.
Vous pouvez personnaliser l'image Docker utilisée par toolbox
, ainsi que les chemins d'accès disponibles pour toolbox
dans le système de fichiers racine. Ces paramètres se trouvent dans le fichier /etc/default/toolbox
. Le fichier /etc/default/toolbox
par défaut ressemble généralement à ce qui suit :
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}
- Les variables
TOOLBOX_DOCKER_IMAGE
etTOOLBOX_DOCKER_TAG
spécifient l'image Docker à utiliser. La valeurgcr.io/cos-cloud/toolbox
par défaut est fournie avec certains outils courants, tels que la Google Cloud CLI préinstallée. - La variable
TOOLBOX_BIND
spécifie les chemins d'accès du système de fichiers rootfs à rendre disponibles dans l'environnement toolbox.
Pour modifier les paramètres par défaut, modifiez le fichier /etc/default/toolbox
ou spécifiez de nouvelles valeurs pour les variables dans ${HOME}/.toolboxrc
pour l'utilisateur approprié. Par exemple, si vous souhaitez que toolbox
utilise fedora:latest
comme conteneur, vous pouvez exécuter les commandes suivantes :
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
Dans le jalon 93, la boîte à outils ne parvient pas à extraire l'image de la boîte à outils personnalisée. Pour contourner ce problème
créer la boîte à outils personnalisée
docker image tar ball et l'exporter via
fichier ${HOME}/.toolboxrc
ou /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
Installer et exécuter des outils à partir de toolbox
Une fois que vous avez appelé l'utilitaire toolbox
pour démarrer l'interface système, vous pouvez utiliser apt-get
à l'intérieur du conteneur résultant pour installer les packages. Exemple :
# 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
Vous n'avez pas toujours besoin de saisir toolbox
pour y exécuter des commandes. Vous pouvez simplement ajouter le préfixe toolbox
à vos commandes. Par exemple, pour installer et exécuter l'utilitaire strace
pour suivre l'exécution du daemon Docker, vous pouvez effectuer les opérations suivantes :
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
La Google Cloud CLI est préinstallée dans Boîte à outils:
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
...
Gardez à l'esprit que la gcloud CLI ne peut accéder qu'aux ressources auxquelles L'instance de VM est autorisée à y accéder. Consultez la documentation de Compute Engine pour en savoir plus sur le provisionnement d'instances de VM ayant accès à d'autres ressources.
Consultez la documentation de la Google Cloud CLI pour en savoir plus sur l'utilisation de la gcloud CLI.
Importer et extraire des fichiers de la boîte à outils
Le système de fichiers racine de l'hôte est accessible dans toolbox
via le chemin /media/root
. Sur l'hôte, le répertoire racine de toolbox
est accessible via le chemin d'accès suivant /var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
où USER
est votre nom d'utilisateur et VERSION
le toolbox
numéro de version (par exemple, v20220722
).
Les exemples suivants montrent comment importer et extraire des fichiers dans 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
Nettoyer l'espace disque utilisé par Toolbox
L'installation de toolbox consomme environ 2 à 3 Go d'espace disque dans le fichier /var
(l'utilisation du disque varie en fonction de la version de Container-Optimized OS). Pour libérer de l'espace disque utilisé par toolbox, effectuez les tâches suivantes en fonction de la version de Container-Optimized OS :
Jalon 89 et versions antérieures
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
docker image rm $IMAGE_PATH:$TAG
Vous pouvez exécuter docker image ls
pour déterminer ces valeurs. Par exemple, IMAGE_PATH=gcr.io/cos-cloud/toolbox
et TAG=v20220722
.
Jalon 93 et versions ultérieures
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
Vous pouvez exécuter sudo ctr images ls -q
pour déterminer cette valeur. Exemple : IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722
.