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
Tire de la imagen de
rsyslog
:# podman pull registry.redhat.io/rhel8/rsyslog
Mostrar (pero no ejecutar) la etiqueta de ejecución
install
pararsyslog
:# 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 scriptinstall.sh
.Ejecute la etiqueta de ejecución
install
pararsyslog
:# 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.Muestra la etiqueta de ejecución
run
pararsyslog
:# 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 demoniorsyslogd
.Ejecute la etiqueta de ejecución
run
pararsyslog
:# 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 demoniorsyslogd
en segundo plano (-d
). El demoniorsyslogd
comienza a recopilar mensajes de registro y a dirigir los mensajes a los archivos del directorio/var/log
.Muestra la etiqueta de ejecución
uninstall
pararsyslog
:# 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
Ejecute la etiqueta de ejecución
uninstall
pararsyslog
:# 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.