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 pull
ydocker create
para configurar el entorno. Solo se ejecutan la primera vez que invocas/usr/bin/toolbox
.systemd-nspawn
para 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
toolbox
despué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
toolbox
se configura una vez por cada usuario que lo invoca. Al ejecutarsudo toolbox
, se configura para el usuarioroot
. - El entorno
toolbox
se crea en/var/lib/toolbox
y 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_IMAGE
yTOOLBOX_DOCKER_TAG
especifican la imagen de Docker que se va a usar. Lagcr.io/cos-cloud/toolbox
predeterminada incluye algunas de las herramientas habituales, como la CLI de Google Cloud, preinstaladas. - La variable
TOOLBOX_BIND
especifica 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
.