Es posible que debas instalar paquetes o herramientas adicionales en Container-Optimized OS para determinadas tareas como, por ejemplo, la depuración. Por ejemplo, puedes depurar problemas de conectividad de nodos instalando tcpdump
en la caja de herramientas.
Aunque Container-Optimized OS no incluye un administrador de paquetes, puedes usar la utilidad toolbox preinstalada para instalar cualquier paquete o herramienta adicional que necesites. El uso de /usr/bin/toolbox
es el método preferido para instalar y ejecutar herramientas de depuración de un solo uso.
/usr/bin/toolbox
básicamente te proporciona un shell en un entorno similar a chroot de Debian. Cuando invocas /usr/bin/toolbox
, ejecuta los siguientes comandos:
docker pull
ydocker create
para configurar el entorno. Estas solo se ejecutan la primera vez que invocas a/usr/bin/toolbox
.systemd-nspawn
para ejecutar el comando dado o (si no hay ningún comando) te proporciona un shell
toolbox
tiene algunas otras propiedades que se deben tener en cuenta:
- La invocación de
toolbox
después de la primera invocación no requiere un daemon de Docker que funcione ni incurre en ninguna sobrecarga de red o disco. - El entorno
toolbox
se configura una vez para cada usuario que lo invoca. Si ejecutassudo toolbox
, se configurará para el usuarioroot
. - El entorno de
toolbox
se crea en/var/lib/toolbox
y es persistente en todos los reinicios. - Puedes acceder a las secciones del sistema de archivos raíz como, por ejemplo, los directorios de inicio del usuario, desde el entorno de
toolbox
.
Cómo personalizar la caja de herramientas para tu implementación
En los siguientes ejemplos, suponemos que tu nombre de usuario es USER
y el nombre de la instancia de Container-Optimized OS es cos-dev
.
Puedes personalizar la imagen de Docker que usa toolbox
y las rutas disponibles para toolbox
en el sistema de archivos raíz. Esta configuración se encuentra en el archivo /etc/default/toolbox
. Por lo general, el archivo /etc/default/toolbox
predeterminado es 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_IMAGE
yTOOLBOX_DOCKER_TAG
especifican la imagen de Docker que se usará. Lagcr.io/cos-cloud/toolbox
predeterminada viene con algunas de las herramientas comunes preinstaladas, como Google Cloud CLI. - La variable
TOOLBOX_BIND
especifica las rutas de rootfs que estarán disponibles dentro del entorno de toolbox.
Para cambiar la configuración predeterminada, modifica el archivo /etc/default/toolbox
o especifica valores nuevos de las variables en ${HOME}/.toolboxrc
para el usuario apropiado. Por ejemplo, si deseas que toolbox
use fedora:latest
como su 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
Cómo instalar y ejecutar herramientas de la caja de herramientas
Una vez que hayas invocado la utilidad toolbox
para iniciar la shell, puedes usar apt-get
dentro del contenedor resultante para instalar los 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 necesitas ingresar toolbox
para ejecutar comandos en ella. Puedes agregar prefijos a tus comandos con toolbox
. Por ejemplo, si deseas instalar y ejecutar la utilidad strace
para rastrear 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á preinstalada en 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
...
Ten en cuenta que gcloud CLI solo puede acceder a los recursos a los que está autorizada la instancia de VM. 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.
Lee la documentación de Google Cloud CLI para obtener más información sobre el uso de gcloud CLI.
Cómo ingresar y extraer archivos en toolbox
Se puede acceder al sistema de archivos raíz del host dentro de toolbox
a través de la ruta de acceso /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
en el que USER
es tu nombre de usuario y VERSION
es el número de versión de toolbox
(por ejemplo, v20220722
).
Los siguientes ejemplos muestran cómo incluir archivos en toolbox
y quitarlos de ella:
# 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
Limpia el espacio en el disco que usa 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 según la versión de Container-Optimized OS). Para liberar el espacio en disco que utiliza la caja de herramientas, realiza las siguientes tareas según la 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