Red Hat Training

A Red Hat training course is available for RHEL 8

6.2. Ejecución de contenedores con etiquetas de ejecución

Algunas imágenes de Red Hat incluyen etiquetas que proporcionan líneas de comando preestablecidas para trabajar con esas imágenes. Usando el comando podman container runlabel <label>, puede decirle a podman que ejecute el comando definido en ese <label> para la imagen. Las etiquetas de ejecución existentes incluyen:

  • install: Configura el sistema anfitrión antes de ejecutar la imagen. Típicamente, esto resulta en la creación de archivos y directorios en el host a los que el contenedor puede acceder cuando se ejecuta más tarde.
  • run: Identifica las opciones de la línea de comandos de podman que se utilizarán al ejecutar el contenedor. Normalmente, las opciones abrirán privilegios en el host y montarán el contenido del host que el contenedor necesita para permanecer permanentemente en el host.
  • uninstall: Limpia el sistema anfitrión después de que haya terminado de ejecutar el contenedor.

Las imágenes de Red Hat que tienen una o más etiquetas de ejecución incluyen las imágenes rsyslog y support-tools. El siguiente procedimiento ilustra cómo utilizar esas imágenes.

6.2.1. Ejecución de rsyslog con runlabels

La imagen de contenedor rhel8/rsyslog está hecha para ejecutar una versión en contenedor del demonio rsyslogd. Dentro de la imagen rsyslog se encuentran las etiquetas de ejecución install, run y uninstall. El siguiente procedimiento te lleva a instalar, ejecutar y desinstalar la imagen rsyslog:

Procedimiento

  1. Tire de la imagen de rsyslog:

    # podman pull registry.redhat.io/rhel8/rsyslog
  2. Mostrar (pero no ejecutar) la etiqueta de ejecución install para rsyslog:

    # podman container runlabel install --display rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/install.sh

    Esto muestra que el comando abrirá privilegios al host, montará el sistema de archivos raíz del host en /host en el contenedor, y ejecutará un script install.sh.

  3. Ejecute la etiqueta de ejecución install para rsyslog:

    # podman container runlabel install rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/install.sh
    Creating directory at /host//etc/pki/rsyslog
    Creating directory at /host//etc/rsyslog.d
    Installing file at /host//etc/rsyslog.conf
    Installing file at /host//etc/sysconfig/rsyslog
    Installing file at /host//etc/logrotate.d/syslog

    Esto crea archivos en el sistema anfitrión que la imagen rsyslog utilizará posteriormente.

  4. Muestra la etiqueta de ejecución run para rsyslog:

    # podman container runlabel run --display rhel8/rsyslog
    command: podman run -d --privileged --name rsyslog --net=host --pid=host -v /etc/pki/rsyslog:/etc/pki/rsyslog -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /etc/sysconfig/rsyslog:/etc/sysconfig/rsyslog -v /etc/rsyslog.d:/etc/rsyslog.d -v /var/log:/var/log -v /var/lib/rsyslog:/var/lib/rsyslog -v /run:/run -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog --restart=always registry.redhat.io/rhel8/rsyslog:latest /bin/rsyslog.sh

    Esto muestra que el comando abre privilegios al host y monta archivos y directorios específicos del host dentro del contenedor, cuando lanza el contenedor rsyslog para ejecutar el demonio rsyslogd.

  5. Ejecute la etiqueta de ejecución run para rsyslog:

    # podman container runlabel run rhel8/rsyslog
    command: podman run -d --privileged --name rsyslog --net=host --pid=host -v /etc/pki/rsyslog:/etc/pki/rsyslog -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /etc/sysconfig/rsyslog:/etc/sysconfig/rsyslog -v /etc/rsyslog.d:/etc/rsyslog.d -v /var/log:/var/log -v /var/lib/rsyslog:/var/lib/rsyslog -v /run:/run -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog --restart=always registry.redhat.io/rhel8/rsyslog:latest /bin/rsyslog.sh
    28a0d719ff179adcea81eb63cc90fcd09f1755d5edb121399068a4ea59bd0f53

    El contenedor rsyslog abre privilegios, monta lo que necesita del host y ejecuta el demonio rsyslogd en segundo plano (-d). El demonio rsyslogd comienza a recopilar mensajes de registro y a dirigir los mensajes a los archivos del directorio /var/log.

  6. Muestra la etiqueta de ejecución uninstall para rsyslog:

    # podman container runlabel uninstall --display rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/uninstall.sh
  7. Ejecute la etiqueta de ejecución uninstall para rsyslog:

    # podman container runlabel uninstall rhel8/rsyslog
    command: podman run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=registry.redhat.io/rhel8/rsyslog:latest -e NAME=rsyslog registry.redhat.io/rhel8/rsyslog:latest /bin/uninstall.sh

    En este caso, el script uninstall.sh sólo elimina el archivo /etc/logrotate.d/syslog. Tenga en cuenta que no limpia los archivos de configuración.