Buscar

3.2.3. Investigación dentro de un contenedor

download PDF

Para investigar dentro de un contenedor en ejecución, puede utilizar el comando podman exec. Con podman exec, puede ejecutar un comando (como /bin/bash) para entrar en un proceso de contenedor en ejecución para investigar ese contenedor.

La razón para usar podman exec, en lugar de simplemente lanzar el contenedor en un shell bash, es que puedes investigar el contenedor mientras está ejecutando su aplicación prevista. Al adjuntar al contenedor mientras está realizando su tarea prevista, se obtiene una mejor visión de lo que el contenedor realmente hace, sin necesariamente interrumpir la actividad del contenedor.

Aquí hay un ejemplo usando podman exec para mirar dentro de un rsyslog en funcionamiento, y luego mirar dentro de ese contenedor.

  1. Launch a container: Lanza un contenedor como la imagen del contenedor rsyslog descrita anteriormente. Escriba podman ps para asegurarse de que se está ejecutando:

    # podman ps
    CONTAINER ID   IMAGE           COMMAND           CREATED       STATUS        PORTS   NAMES
    74b1da000a11   rsyslog:latest "/usr/rsyslog.sh   6 minutes ago Up 6 minutes          rsyslog
  2. Entre en el contenedor con podman exec: Utilice el ID o el nombre del contenedor para abrir un shell bash y acceder al contenedor en ejecución. A continuación, puede investigar los atributos del contenedor de la siguiente manera:

    # 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

Los comandos que se acaban de ejecutar desde el shell bash (que se ejecuta dentro del contenedor) muestran varias cosas.

  • El contenedor fue construido a partir de una imagen RHEL release 8.0.
  • La tabla de procesos (ps -ef) muestra que el comando /usr/sbin/rsyslogd es el proceso ID 1.
  • Los procesos que se ejecutan en la tabla de procesos del host no se pueden ver desde el contenedor. Aunque el proceso rsyslogd puede verse en la tabla de procesos del host (era el proceso ID 19593 en el host).
  • No hay un kernel separado que se ejecute en el contenedor (uname -r muestra el kernel del sistema anfitrión).
  • El comando rpm -qa le permite ver los paquetes RPM que están incluidos dentro del contenedor. En otras palabras, hay una base de datos RPM dentro del contenedor.
  • La visualización de la memoria (free -m) muestra la memoria disponible en el host (aunque lo que el contenedor puede usar realmente puede limitarse usando cgroups).
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.