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:
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
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
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
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