Capítulo 6. Execução de imagens especiais de contêineres
Use este capítulo para aprender sobre alguns tipos especiais de imagens de recipientes. Estas incluem:
-
Toolbox: Ao invés de sobrecarregar um sistema host instalando ferramentas necessárias para depurar problemas ou monitorar recursos, você pode executar o comando
toolbox. A Toolbox inicia uma imagem de containersupport-toolsque contém ferramentas que você pode usar para executar relatórios ou diagnosticar problemas no host. -
Runlabels: Algumas imagens de contêineres têm rótulos incorporados que lhe permitem executar esses contêineres com opções e argumentos pré-definidos. O comando
podman container runlabel <label>, permite executar o comando definido naquele<label>para a imagem do contêiner. Os rótulos suportados sãoinstall,runeuninstall.
6.1. Solução de problemas de contentores com caixa de ferramentas Copiar o linkLink copiado para a área de transferência!
Em vez de instalar ferramentas de solução de problemas diretamente em seu sistema RHEL 8, o utilitário toolbox oferece uma maneira de adicionar temporariamente essas ferramentas, e depois descartá-las facilmente quando você estiver pronto. O utilitário toolbox funciona por:
-
Trazendo a imagem
registry.redhat.io/rhel8/support-toolspara seu sistema local. - Iniciando um recipiente a partir da imagem, depois rodando uma concha dentro do recipiente a partir do qual você pode acessar o sistema hospedeiro.
O recipiente support-tools permite que você o faça:
-
Executar comandos que não podem ser instalados no sistema hospedeiro, tais como
sosreport,strace, outcpdump, de uma forma que lhes permita agir no sistema hospedeiro. - Instale mais software dentro do contêiner para usar no sistema host.
- Descarte o recipiente quando estiver pronto.
O seguinte ilustra uma típica sessão toolbox.
Procedimento
Certifique-se de que os pacotes
toolboxepodmanestejam instalados:lista de módulos de yum - ferramentas para contêineres
# lista de módulos de yum - ferramentas para contêineresCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para instalar o conjunto completo de ferramentas de contêineres, digite:
Módulo yum instala ferramentas para container -y
# Módulo yum instala ferramentas para container -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow Execute o comando da caixa de ferramentas para puxar e executar a imagem
support-tools(inserindo suas credenciais do Portal do Cliente da Red Hat quando solicitado):Copy to Clipboard Copied! Toggle word wrap Toggle overflow Abra uma concha de bash para executar comandos dentro do contêiner:
bash-4.4#
# bash-4.4#Copy to Clipboard Copied! Toggle word wrap Toggle overflow De dentro do container, o sistema de arquivo raiz no host está disponível no diretório
/host. Os outros diretórios mostrados estão todos dentro do contêiner.ls /
# ls / bin dev home lib lost+found mnt proc run srv tmp var boot etc host lib64 media opt root sbin sys usrCopy to Clipboard Copied! Toggle word wrap Toggle overflow Tente executar um comando dentro de seu contêiner. O comando
sosreportpermite que você gere informações sobre seu sistema para enviar ao suporte da Red Hat:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note que o comando
sosreportsalva o relatório para o anfitrião (/host/var/tmp/sosreport-<ID>).Instale um pacote de software dentro do recipiente, para adicionar ferramentas que ainda não estejam no recipiente. Por exemplo, para obter um núcleo de um processo em execução no host, instale os pacotes
procpsegcore, usepspara obter o ID do processo de um daemon em execução, depois usegcorepara obter um núcleo de um dump:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Para deixar o recipiente e voltar para o anfitrião, digite
exit. O arquivo é salvo em/host/tmp/chronyd.core.809e está disponível em/tmp/chronyd.core.809no host. Para remover a caixa de ferramentas-root container, digite:
podman rm toolbox-root
# podman rm toolbox-rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Você pode alterar o registro, a imagem ou o nome do recipiente utilizado pela caixa de ferramentas, acrescentando o seguinte:
-
REGISTRY: Alterar o registro a partir do qual a imagem da caixa de ferramentas é retirada. Por exemplo
REGISTRY=registry.example.com -
IMAGE: Mude a imagem que é utilizada. Por exemplo,
IMAGE=mysupport-tools -
TOOLBOX_NAME: Alterar o nome atribuído ao recipiente em funcionamento. Por exemplo,
TOOLBOX_NAME=mytoolbox
Na próxima vez que você executar toolbox, serão utilizados os novos valores do arquivo .toolboxrc.
6.1.1. Privilégios de abertura para o anfitrião Copiar o linkLink copiado para a área de transferência!
Quando você executa outros comandos de dentro do contêiner support-tools (ou de qualquer contêiner privilegiado), eles podem se comportar de forma diferente do que quando executados em um contêiner não-privilegiado. Embora sosreport possa dizer quando ele está rodando em um contêiner, outros comandos precisam ser ditos para agir no sistema hospedeiro (o diretório /host ). Aqui estão exemplos de características que podem ou não estar abertas para o host a partir de um contêiner:
-
Privileges: Um container privilegiado (
--privileged) executa aplicações como usuário root no host por padrão. O contêiner tem esta capacidade porque roda com um contexto de segurançaunconfined_tSELinux. Assim você pode, por exemplo, excluir arquivos e diretórios montados do host que são de propriedade do usuário root. -
Process tables: Ao contrário de um contêiner normal que só vê os processos rodando dentro do contêiner, rodar um comando
ps -edentro de um contêiner privilegiado (com o conjunto--pid=host) permite que você veja cada processo rodando no host. Você pode passar um ID de processo do host para comandos que rodam no contêiner privilegiado (por exemplo,kill <PID>). Com alguns comandos, entretanto, podem ocorrer problemas de permissões quando tentam acessar processos a partir do contêiner. -
Network interfaces: Por padrão, um recipiente tem apenas uma interface de rede externa e uma interface de rede de loopback. Com interfaces de rede abertas para o host (
--net=host), você pode acessar essas interfaces de rede diretamente de dentro do contêiner. -
Inter-process communications: A instalação IPC no host é acessível de dentro do contêiner privilegiado. Você pode executar comandos como
ipcspara ver informações sobre filas de mensagens ativas, segmentos de memória compartilhada e conjuntos de semáforos no host.