podman

Cómo ejecutar contenedores como servicio Systemd con Podman

Como sabemos, podman es una herramienta sin daemon de código abierto que proporciona un entorno para crear, ejecutar y administrar contenedores. Ejecutar contenedores como servicio systemd significa que los contenedores se iniciarán automáticamente cuando se reinicie el sistema.

En esta publicación, aprenderemos cómo ejecutar contenedores como servicio systemd con podman en distribuciones basadas en RHEL como RHEL 8, CentOS 8 y Rocky Linux 8.

Requisitos previos:

  • Instalación mínima del sistema operativo basado en RHEL.
  • Conexión estable a Internet
  • Usuario Sudo con privilegios de root

En esta demostración, estoy usando RHEL 8.5 mínimo, pero estos pasos también son aplicables para CentOS 8 y Rocky Linux 8. Pasemos a los pasos,

Paso 1) Instalar Podman

Para instalar podman en RHEL 8, ejecute

$ sudo dnf install @container-tools -y

Para CentOS 8/Rocky Linux 8, ejecute

$ sudo dnf install -y podman

Verificar la instalación del podman

Para verificar si podman se instaló correctamente o no, intente girar el contenedor ‘hello-world’ usando el comando debajo de podman.

$ podman -v
podman version 3.3.1
$
$ podman run 'hello-world'

Nota: Cuando ejecutamos podman por primera vez, nos pide que elijamos el registro donde desea descargar la imagen del contenedor.

La salida del comando anterior le gustaría a continuación:

podman-instalación-verificación-rhel8

El prefecto anterior confirma que podman se instaló correctamente. Pasemos al siguiente paso.

Paso 2) Generar Systemd Service de un contenedor

Supongamos que queremos generar el servicio systemd para el contenedor rsyslog. Primero gire el contenedor rsyslog usando los siguientes comandos podman,

$ podman run -d --name <Container-Name>  <Image-Name>

Nota: si desea descargar la imagen del contenedor rsyslog de un registro específico, utilice la siguiente sintaxis:

$ podman run -d --name container-name  <registry-URL>/<image-name>

En esta demostración, he utilizado el registro de Red Hat. Así que primero inicie sesión en el registro

$ podman login registry.access.redhat.com
Username: <Specify-User-Name>
Password: <Enter-Password>
Login Succeeded!
$

Ahora intente girar el contenedor usando el siguiente comando podman,

$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog
$ podman ps

podman-ejecutar-rsyslog-contenedor-linux

Ahora cree el servicio systemd para el contenedor rsyslog-server, ejecute los siguientes comandos

$ mkdir -p .config/systemd/user
$ cd .config/systemd/user/
$ podman generate systemd --name rsyslog-server --files --new
/home/sysops/.config/systemd/user/container-rsyslog-server.service
$

Como podemos arriba, se crea el servicio systemd.

Para obtener más detalles sobre el comando ‘podman generar systemd’, consulte su página de ayuda

$ podman generate systemd --help

podman-generar-systemd-comando

Paso 3) Iniciar y habilitar el servicio Container Systemd

Ejecute el siguiente comando systemctl para iniciar y habilitar el servicio systemd para el contenedor rsyslog-server.

$ cd .config/systemd/user/
$ systemctl --user daemon-reload
$ systemctl --user enable container-rsyslog-server.service
$ systemctl --user restart container-rsyslog-server.service

Ahora verifique el estado del servicio systemd y el estado del contenedor, ejecute

$ systemctl --user status container-rsyslog-server.service
$ podman ps

Ahora, cuando se reinicia el sistema, el contenedor se iniciará automáticamente a través de su servicio systemd. Así que reiniciémoslo una vez y verifiquemos el servicio del contenedor.

$ sudo reboot

Una vez que el sistema vuelva a estar en línea, inicie sesión en el sistema y verifique el servicio del contenedor

$ podman ps
$ cd .config/systemd/user/
$ systemctl --user status container-rsyslog-server.service

contenedor-estado-post-reinicio

Genial, esto confirma que el contenedor rsyslog-server se inicia automáticamente después del reinicio a través de su servicio systemd.

Eso es todo de este post, espero que lo hayas encontrado informativo. Por favor, comparta sus comentarios y consultas.

Leer también: Cómo ejecutar Jenkins Container como servicio Systemd con Docker

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *