Buscar

Capítulo 6. Ejecución de imágenes de contenedores especiales

download PDF

Utilice este capítulo para conocer algunos tipos especiales de imágenes de contenedores. Estos incluyen:

  • Toolbox: En lugar de sobrecargar un sistema anfitrión instalando las herramientas necesarias para depurar problemas o supervisar funciones, puede ejecutar el comando toolbox. Toolbox inicia una imagen de contenedor support-tools que contiene herramientas que puede utilizar para ejecutar informes o diagnosticar problemas en el host.
  • Runlabels: Algunas imágenes de contenedores tienen etiquetas incorporadas que permiten ejecutar esos contenedores con opciones y argumentos preestablecidos. El comando podman container runlabel <label>, le permite ejecutar el comando definido en ese <label> para la imagen del contenedor. Las etiquetas soportadas son install, run y uninstall.

6.1. Solución de problemas de hosts de contenedores con la caja de herramientas

En lugar de instalar las herramientas de solución de problemas directamente en su sistema RHEL 8, la utilidad toolbox ofrece una forma de añadir temporalmente esas herramientas y luego descartarlas fácilmente cuando haya terminado. La utilidad toolbox funciona de la siguiente manera:

  • Llevando la imagen de registry.redhat.io/rhel8/support-tools a su sistema local.
  • Arrancar un contenedor desde la imagen, y luego ejecutar un shell dentro del contenedor desde el que se puede acceder al sistema anfitrión.

El contenedor support-tools le permite:

  • Ejecutar comandos que pueden no estar instalados en el sistema anfitrión, como sosreport, strace, o tcpdump, de manera que les permita actuar en el sistema anfitrión.
  • Instalar más software dentro del contenedor para utilizarlo en el sistema anfitrión.
  • Deseche el recipiente cuando haya terminado.

A continuación se ilustra una sesión típica de toolbox.

Procedimiento

  1. Asegúrese de que los paquetes toolbox y podman están instalados:

    # yum module list container-tools

    Para instalar el conjunto completo de herramientas para contenedores, escriba:

    # yum module install container-tools -y
  2. Ejecute el comando de la caja de herramientas para extraer y ejecutar la imagen support-tools (introduciendo sus credenciales del Portal del Cliente de Red Hat cuando se le solicite):

    # toolbox
    Trying to pull registry.redhat.io/rhel8/support-tools...
    ...
    Would you like to authenticate to registry: 'registry.redhat.io' and try again? [y/N] y
    Username: johndoe
    Password: *************
    Login Succeeded!
    Trying to pull registry.redhat.io/rhel8/support-tools...Getting image source signatures
    ...
    Storing signatures
    30e261462851238d38f4ef2afdaf55f1f8187775c5ca373b43e0f55722faaf97
    Spawning a container 'toolbox-root' with image 'registry.redhat.io/rhel8/support-tools'
    Detected RUN label in the container image. Using that as the default...
    command: podman run -it --name toolbox-root --privileged --ipc=host --net=host --pid=host -e HOST=/host -e NAME=toolbox-root -e IMAGE=registry.redhat.io/rhel8/support-tools:latest -v /run:/run -v /var/log:/var/log -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -v /:/host registry.redhat.io/rhel8/support-tools:latest
  3. Abra un shell bash para ejecutar comandos dentro del contenedor:

    # bash-4.4#
  4. Desde el interior del contenedor, el sistema de archivos raíz del host está disponible en el directorio /host. Los otros directorios mostrados están todos dentro del contenedor.

    # ls /
    bin   dev  home  lib	lost+found  mnt  proc  run   srv  tmp  var
    boot  etc  host  lib64	media	    opt  root  sbin  sys  usr
  5. Intente ejecutar un comando dentro de su contenedor. El comando sosreport le permite generar información sobre su sistema para enviarla al soporte de Red Hat:

    bash-4.4# sosreport
    
    sosreport (version 3.6)
    This command will collect diagnostic and configuration information from
    this Red Hat Enterprise Linux system and installed applications.
    
    An archive containing the collected information will be generated in
    /host/var/tmp/sos.u82evisb and may be provided to a Red Hat support
    representative.
    ...
    Press ENTER to continue, or CTRL-C to quit.   <Press ENTER>
    ...
    Your sosreport has been generated and saved in:
      /host/var/tmp/sosreport-rhel81beta-12345678-2019-10-29-pmgjncg.tar.xz
    The checksum is: c4e1fd3ee45f78a17afb4e45a05842ed
    Please send this file to your support representative.

    Tenga en cuenta que el comando sosreport guarda el informe en el host (/host/var/tmp/sosreport-<ID>).

  6. Instalar un paquete de software dentro del contenedor, para añadir herramientas que no están ya en el contenedor. Por ejemplo, para obtener un volcado del núcleo de un proceso en ejecución en el host, instale los paquetes procps y gcore, utilice ps para obtener el ID del proceso de un demonio en ejecución y, a continuación, utilice gcore para obtener un volcado del núcleo:

    bash-4.4# yum install procps gdb -y
    bash-4.4# ps -ef | grep chronyd
    994        809     1  0 Oct28 ?        00:00:00 /usr/sbin/chronyd
    bash-4.4# gcore -o /host/tmp/chronyd.core 809
    Missing separate debuginfo for target:/usr/sbin/chronyd
    Try: dnf --enablerepo='*debug*' install /usr/lib/debug/.build-id/96/0789a8a3bf28932b093e94b816be379f16a56a.debug
    ...
    Saved corefile /host/tmp/chronyd.core.809
    [Inferior 1 (process 809) detached]
  7. Para salir del contenedor y volver al host, escribe exit. El archivo se guarda en /host/tmp/chronyd.core.809 y está disponible desde /tmp/chronyd.core.809 en el host.
  8. Para eliminar el contenedor toolbox-root, escriba:

    # podman rm toolbox-root

Puedes cambiar el nombre del registro, de la imagen o del contenedor utilizado por toolbox añadiendo lo siguiente:

  • REGISTRY: Cambia el registro del que se extrae la imagen de la caja de herramientas. Por ejemplo REGISTRY=registry.example.com
  • IMAGE: Cambia la imagen que se utiliza. Por ejemplo, IMAGE=mysupport-tools
  • TOOLBOX_NAME: Cambia el nombre asignado al contenedor en ejecución. Por ejemplo, TOOLBOX_NAME=mytoolbox

La próxima vez que ejecute toolbox, se utilizarán los nuevos valores del archivo .toolboxrc.

6.1.1. Privilegios de apertura para el anfitrión

Cuando se ejecutan otros comandos desde el contenedor support-tools (o cualquier contenedor privilegiado), pueden comportarse de manera diferente que cuando se ejecutan en un contenedor no privilegiado. Aunque sosreport puede saber cuándo se está ejecutando en un contenedor, otros comandos necesitan que se les diga que actúen en el sistema anfitrión (el directorio /host ). Aquí hay ejemplos de funciones que pueden o no estar abiertas al host desde un contenedor:

  • Privileges: Un contenedor privilegiado (--privileged) ejecuta aplicaciones como usuario root en el host por defecto. El contenedor tiene esta capacidad porque se ejecuta con un contexto de seguridad SELinux unconfined_t. Así que puede, por ejemplo, eliminar archivos y directorios montados desde el host que son propiedad del usuario root.
  • Process tables: A diferencia de un contenedor normal que sólo ve los procesos que se ejecutan dentro del contenedor, la ejecución de un comando ps -e dentro de un contenedor privilegiado (con --pid=host configurado) le permite ver todos los procesos que se ejecutan en el host. Puedes pasar un ID de proceso del host a los comandos que se ejecutan en el contenedor privilegiado (por ejemplo, kill <PID>). Sin embargo, con algunos comandos pueden surgir problemas de permisos cuando intentan acceder a los procesos desde el contenedor.
  • Network interfaces: Por defecto, un contenedor sólo tiene una interfaz de red externa y una interfaz de red loopback. Con las interfaces de red abiertas al host (--net=host), puedes acceder a esas interfaces de red directamente desde el contenedor.
  • Inter-process communications: La instalación IPC en el host es accesible desde el contenedor privilegiado. Puedes ejecutar comandos como ipcs para ver información sobre colas de mensajes activas, segmentos de memoria compartida y conjuntos de semáforos en el host.
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.