Red Hat Training
A Red Hat training course is available for RHEL 8
3.2.3. Investigando dentro de um contêiner
Para investigar dentro de um contêiner em funcionamento, você pode usar o comando podman exec. Com podman exec, você pode executar um comando (como /bin/bash) para entrar em um processo de contêiner em funcionamento para investigar esse contêiner.
A razão para usar podman exec, em vez de apenas lançar o recipiente em uma concha bash, é que você pode investigar o recipiente enquanto ele está rodando sua aplicação pretendida. Anexando-se ao contêiner enquanto ele está executando sua tarefa pretendida, você obtém uma visão melhor do que o contêiner realmente faz, sem necessariamente interromper a atividade do contêiner.
Aqui está um exemplo usando o site podman exec para procurar em um rsyslog em funcionamento, depois procure dentro desse recipiente.
Launch a container: Lançar um recipiente como a imagem do recipientersyslogdescrita anteriormente. Digitepodman pspara ter certeza de que ele está funcionando:# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 74b1da000a11 rsyslog:latest "/usr/rsyslog.sh 6 minutes ago Up 6 minutes rsyslog
Digite o recipiente com
podman exec: Use o ID ou nome do recipiente para abrir uma concha bash para acessar o recipiente em funcionamento. Em seguida, você pode investigar os atributos do contêiner da seguinte forma:# podman exec -it 74b1da000a11 /bin/bash [root@74b1da000a11 /]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 [root@74b1da000a11 /]# yum install procps-ng [root@74b1da000a11 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 15:30 ? 00:00:00 /usr/sbin/rsyslogd -n root 8 0 6 16:01 pts/0 00:00:00 /bin/bash root 21 8 0 16:01 pts/0 00:00:00 ps -ef [root@74b1da000a11 /]# df -h Filesystem Size Used Avail Use% Mounted on overlay 39G 2.5G 37G 7% / tmpfs 64M 0 64M 0% /dev tmpfs 1.5G 8.7M 1.5G 1% /etc/hosts shm 63M 0 63M 0% /dev/shm tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup tmpfs 1.5G 0 1.5G 0% /proc/acpi tmpfs 1.5G 0 1.5G 0% /proc/scsi tmpfs 1.5G 0 1.5G 0% /sys/firmware [root@74b1da000a11 /]# uname -r 4.18.0-80.1.2.el8_0.x86_64 [root@74b1da000a11 /]# rpm -qa | more redhat-release-8.0-0.44.el8.x86_64 filesystem-3.8-2.el8.x86_64 basesystem-11-5.el8.noarch ncurses-base-6.1-7.20180224.el8.noarch ... bash-4.2# free -m total used free shared buff/cache available Mem: 1941 560 139 10 1241 1189 Swap: 1023 15 1008 [root@74b1da000a11 /]# exit
Os comandos apenas funcionam a partir do bash shell (que corre dentro do contêiner) e mostram várias coisas.
- O container foi construído a partir de uma imagem RHEL release 8.0.
-
A tabela de processos (
ps -ef) mostra que o comando/usr/sbin/rsyslogdé o ID de processo 1. -
Os processos em execução na tabela de processos do host não podem ser vistos de dentro do contêiner. Embora o processo
rsyslogdpossa ser visto na tabela de processos do host (era o ID do processo 19593 no host). -
Não há kernel separado rodando no recipiente (
uname -rmostra o kernel do sistema hospedeiro). -
O comando
rpm -qapermite que você veja os pacotes RPM que estão incluídos dentro do contêiner. Em outras palavras, há um banco de dados RPM dentro do contêiner. -
A visualização da memória (
free -m) mostra a memória disponível no host (embora o que o container pode realmente usar possa ser limitado usando cgroups).