Pode ter de instalar pacotes ou ferramentas adicionais no SO otimizado para contentores
para determinadas tarefas, como a depuração. Por exemplo, resolva problemas de conectividade de nós
instalando tcpdump
na caixa de ferramentas.
Embora o SO otimizado para contentores não inclua um gestor de pacotes, pode usar o utilitário toolbox pré-instalado para instalar quaisquer pacotes ou ferramentas adicionais de que necessite. A utilização de
/usr/bin/toolbox
é o método preferencial para instalar e executar ferramentas de depuração únicas.
Essencialmente, o /usr/bin/toolbox
oferece-lhe uma shell num ambiente semelhante a um chroot do Debian. Quando invoca o /usr/bin/toolbox
, este executa os seguintes comandos:
docker pull
edocker create
para configurar o ambiente. Estes comandos só são executados na primeira vez que invoca/usr/bin/toolbox
.systemd-nspawn
para executar o comando fornecido ou (na ausência de qualquer comando) fornece-lhe uma shell
toolbox
tem outras propriedades a ter em conta:
- A invocação de
toolbox
após a primeira invocação não requer um daemon do Docker funcional, nem incorre em sobrecarga de rede ou de disco. - O ambiente
toolbox
é configurado uma vez para cada utilizador que o invoca. A execução desudo toolbox
configura-o para o utilizadorroot
. - O ambiente
toolbox
é criado em/var/lib/toolbox
e é persistente nos reinícios. - Pode aceder a secções do sistema de ficheiros de raiz, como diretórios
principais do utilizador, a partir do ambiente
toolbox
.
Personalize a caixa de ferramentas para a sua implementação
Nos exemplos seguintes, partimos do princípio de que o seu nome de utilizador é USER
e o nome da instância do SO otimizado para contentores é cos-dev
.
Pode personalizar a imagem do Docker que o toolbox
usa, bem como os caminhos disponíveis para o toolbox
no sistema de ficheiros de raiz. Estas definições encontram-se no ficheiro /etc/default/toolbox
. Normalmente, o ficheiro /etc/default/toolbox
predefinido
tem o seguinte aspeto:
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}
- As variáveis
TOOLBOX_DOCKER_IMAGE
eTOOLBOX_DOCKER_TAG
especificam a imagem do Docker a usar. A imagem predefinidagcr.io/cos-cloud/toolbox
inclui algumas das ferramentas comuns, como a CLI do Google Cloud pré-instaladas. - A variável
TOOLBOX_BIND
especifica os caminhos de rootfs a disponibilizar no ambiente da caixa de ferramentas.
Para alterar as predefinições, modifique o ficheiro /etc/default/toolbox
ou
especifique novos valores para as variáveis em ${HOME}/.toolboxrc
para o utilizador
adequado. Por exemplo, supondo que quer que toolbox
use fedora:latest
como respetivo contentor, pode executar os seguintes 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
O ficheiro /etc/default/toolbox
pode ser modificado conforme mostrado abaixo.
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
Instale e execute ferramentas a partir da caixa de ferramentas
Depois de invocar o utilitário toolbox
para iniciar a shell, pode usar apt-get
no contentor resultante para instalar pacotes. Por exemplo:
# 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
Não tem sempre de introduzir toolbox
para executar comandos. Pode
adicionar o prefixo toolbox
aos seus comandos. Por exemplo, para instalar e executar o utilitário strace
para rastrear a execução do daemon Docker, pode fazer o seguinte:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
A CLI do Google Cloud está pré-instalada na caixa de ferramentas:
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
...
Tenha em atenção que a CLI gcloud só pode aceder a recursos aos quais a instância de VM tem autorização de acesso. Leia a documentação do Compute Engine para saber mais sobre o aprovisionamento de instâncias de VM com acesso a outros recursos.
Leia a documentação da CLI do Google Cloud para saber mais sobre a utilização da CLI gcloud.
Coloque ficheiros dentro e fora da caixa de ferramentas
O sistema de ficheiros raiz do anfitrião é acessível no interior de toolbox
através do caminho /media/root
. No anfitrião, o diretório raiz do toolbox
é acessível
através do seguinte caminho:
/var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
onde USER
é o seu nome de utilizador e VERSION
é o número da versão do toolbox
(por exemplo, v20220722
).
Os exemplos seguintes mostram como transferir ficheiros para o toolbox
e a partir deste:
# 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
Limpe o espaço em disco usado pela caixa de ferramentas
A instalação da caixa de ferramentas consome aproximadamente 2 a 3 GB de espaço em disco em /var
(a utilização do disco varia consoante a versão do SO otimizado para contentores). Para
libertar espaço em disco usado pela caixa de ferramentas, execute as seguintes tarefas consoante a sua versão do
SO otimizado para contentores:
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
Pode executar sudo ctr images ls -q
para determinar este valor. Por exemplo,
IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722
.