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 pulledocker createpara configurar o ambiente. Estes comandos só são executados na primeira vez que invoca/usr/bin/toolbox.systemd-nspawnpara 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
toolboxapó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 toolboxconfigura-o para o utilizadorroot. - O ambiente
toolboxé criado em/var/lib/toolboxe é 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_IMAGEeTOOLBOX_DOCKER_TAGespecificam a imagem do Docker a usar. A imagem predefinidagcr.io/cos-cloud/toolboxinclui algumas das ferramentas comuns, como a CLI do Google Cloud pré-instaladas. - A variável
TOOLBOX_BINDespecifica 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.