Es posible que tengas que instalar paquetes o herramientas adicionales en Container-Optimized OS para realizar determinadas tareas, como depurar. Por ejemplo, puedes depurar problemas de conectividad de nodos instalando tcpdump en la caja de herramientas.
Aunque Container-Optimized OS no incluye un gestor de paquetes, puedes usar la utilidad toolbox preinstalada para instalar los paquetes o las herramientas adicionales que necesites. Usar /usr/bin/toolbox es el método preferido para instalar y ejecutar herramientas de depuración puntuales.
/usr/bin/toolbox te proporciona básicamente un shell en un entorno similar a chroot de Debian. Cuando invocas /usr/bin/toolbox, se ejecutan los siguientes comandos:
docker pullydocker createpara configurar el entorno. Solo se ejecutan la primera vez que invocas/usr/bin/toolbox.systemd-nspawnpara ejecutar el comando indicado o (si no hay ningún comando) te proporciona un shell
toolbox tiene otras propiedades que debes tener en cuenta:
- Invocar
toolboxdespués de la primera invocación no requiere un daemon de Docker que funcione, ni supone ninguna sobrecarga de red o de disco. - El entorno
toolboxse configura una vez por cada usuario que lo invoca. Al ejecutarsudo toolbox, se configura para el usuarioroot. - El entorno
toolboxse crea en/var/lib/toolboxy persiste tras los reinicios. - Puedes acceder a secciones del sistema de archivos raíz, como los directorios de inicio de los usuarios, desde el entorno
toolbox.
Personalizar la caja de herramientas para tu implementación
En los siguientes ejemplos, se da por hecho que tu nombre de usuario es USER y que el nombre de tu instancia de Container-Optimized OS es cos-dev.
Puedes personalizar la imagen Docker que usa toolbox, así como las rutas disponibles para toolbox en el sistema de archivos raíz. Estos ajustes se encuentran en el archivo /etc/default/toolbox. El archivo /etc/default/toolbox predeterminado
suele ser similar al siguiente:
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}
- Las variables
TOOLBOX_DOCKER_IMAGEyTOOLBOX_DOCKER_TAGespecifican la imagen de Docker que se va a usar. Lagcr.io/cos-cloud/toolboxpredeterminada incluye algunas de las herramientas habituales, como la CLI de Google Cloud, preinstaladas. - La variable
TOOLBOX_BINDespecifica las rutas de rootfs que se van a poner a disposición en el entorno de la caja de herramientas.
Para cambiar los ajustes predeterminados, modifique el archivo /etc/default/toolbox o especifique nuevos valores para las variables en ${HOME}/.toolboxrc del usuario correspondiente. Por ejemplo, si quieres que toolbox use fedora:latest como contenedor, puedes ejecutar los siguientes comandos:
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
El archivo /etc/default/toolbox se puede modificar como se muestra a continuación.
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
Instalar y ejecutar herramientas de la caja de herramientas
Una vez que hayas invocado la utilidad toolbox para iniciar el shell, puedes usar apt-get dentro del contenedor resultante para instalar paquetes. Por ejemplo:
# 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
No siempre tienes que introducir toolbox para ejecutar comandos en ella. Puedes añadir el prefijo toolbox a tus comandos. Por ejemplo, para instalar y ejecutar la utilidad strace para monitorizar la ejecución del daemon de Docker, puedes hacer lo siguiente:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
Google Cloud CLI está preinstalado en la caja de herramientas:
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
...
Ten en cuenta que la CLI de gcloud solo puede acceder a los recursos a los que la instancia de VM tenga autorización. Consulta la documentación de Compute Engine para obtener más información sobre el aprovisionamiento de instancias de VM con acceso a otros recursos.
Consulta la documentación de Google Cloud CLI para obtener más información sobre el uso de gcloud CLI.
Importar y exportar archivos de la caja de herramientas
Se puede acceder al sistema de archivos raíz del host en toolbox a través de la ruta /media/root. En el host, se puede acceder al directorio raíz de toolbox a través de la siguiente ruta:
/var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
donde USER es tu nombre de usuario y VERSION es el número de versión de toolbox (por ejemplo, v20220722).
En los siguientes ejemplos se muestra cómo introducir y extraer archivos de 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
Limpiar el espacio en disco usado por la caja de herramientas
La instalación de la caja de herramientas consume aproximadamente entre 2 y 3 GB de espacio en disco en /var (el uso del disco varía en función de la versión de Container-Optimized OS). Para liberar espacio en disco usado por la caja de herramientas, realiza las siguientes tareas en función de tu versión de Container-Optimized OS:
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
Puedes ejecutar sudo ctr images ls -q para determinar este valor. Por ejemplo, IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722.