Este repositorio acompaña al video de Linuxero Agrio titulado:
"Podman vs Docker con systemd: ¿Quién manda?"
Aquí encontrarás ejemplos prácticos que muestran cómo integrar contenedores como servicios de systemd usando Docker (al estilo tradicional y manual) y Podman (con su enfoque moderno basado en Quadlets).
containers-systemd
│ README.md
│ webserver-docker.service # Archivo de systemd manual para contenedor docker
│ webserver-podman.container # Archivo quadlet para contenedor podman (rootless)
│ webserver-podman-user@.container # Archivo quadlet template para contenedor podman (rootles)
│
└───html
| │ index.html # Archivo de indice de ejemplo
docker run --name webserver-docker -d -p 8080:8080 -v $(pwd)/html:/opt/nginx/html quay.io/linuxeroagrio/webserver:1.26.3-v3Valida que tu contenedor este en ejecución:
docker psValida se sirva el contenido de la página de ejemplo
curl http://localhost:8080Copia webserver-docker.service a /etc/systemd/system:
sudo cp webserver-docker.service /etc/systemd/system/Recarga los daemon de systemd y habilita el servicio:
sudo systemctl daemon-reload
sudo systemctl enable --now webserver-docker.service
sudo systemctl is-active webserver-docker.servicesudo journalctl -f -u webserver-docker.serviceEste enfoque funciona, pero tiene varios inconvenientes:
- Depende de que el daemon dockerd esté corriendo.
- No es rootless.
- Los contenedores no son servicios de systemd por sí mismos.
Si deseas que tu servicio de contenedor rootless se inicie con el sistema sin que tengas que hacer login, habilita linger para el usuario dueño del servicio de systemd a crear.
sudo loginctl show-user TU_USUARIO | grep -i linger
sudo loginctl enable-linger TU_USUARIO
# Para verificar linger habilitado
sudo loginctl show-user TU_USUARIO | grep -i lingerNOTA No olvides sustituir la cadena TU_USUARIO por el nombre de usuario de tu sistema, una forma de obtenerlo es ejecutando el comando
whoamien la ternminal.
Copia webserver-podman.container a tu directorio de usuario:
NOTA Antes de copiar, no olvides editar el archivo
webserver-podman.containeractualizando la opciónVolumeal path del dierectorio html de este repositorio en tu máquina. Una forma rápida de hacerlo es, desde una terminal, muevete al directorio donde descargaste este repositorio y ejecuta:sed -i s#/path/al/directorio#$(pwd)#g webserver-podman.container
mkdir -pv ~/.config/containers/systemd/
cp webserver-podman.container ~/.config/containers/systemdPara verificar que no tengamos errores:
/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun
systemd-analyze --user --generators=true verify webserver-podman.serviceY activamos el servicio Para verificar que no tengamos errores:
systemctl --user daemon-reload
systemctl --user start webserver-podman.service
systemctl --user is-active webserver-podman.serviceValida que tu contenedor este en ejecución:
podman psValida que se sirva el contenido de la página de ejemplo
curl http://localhost:8081journalctl --user -f -u webserver-podmanEste método no necesita root, no requiere ningún daemon corriendo en segundo plano y permite que cada contenedor sea tratado como un servicio nativo de systemd.
| Característica | Docker | Podman + Quadlets |
|---|---|---|
| Usa daemon (dockerd) | ✅ Sí | ❌ No |
| Ejecuta como rootless | ✅ Completo | |
| Integración con systemd | ❌ Manual | ✅ Automática |
| Usa archivos .container | ❌ No | ✅ Sí |
| Manejo con systemctl | ✅ Natural |
Podman no solo compite con Docker, lo supera en diseño moderno y compatibilidad con systemd. Usar Quadlets es más limpio, más seguro y más potente, especialmente cuando se trabaja en entornos multiusuario o sin privilegios de administrador.
"Con Podman, tu contenedor ya no es una caja negra… es un ciudadano systemd de primera clase."
👉 Encuéntralo en el canal de YouTube Linuxero Agrio y prepárate para una comparación ácida entre dos mundos que se cruzan: contenedores y sistemas init.
Crea un servicio de systemd para dos contenedores rootless usando solamente el archivo de template webserver-podman-user@.container y responde:
- ¿Que hace este template diferente al original?
NOTA No olvides editar el archivo
webserver-podman-user@.containeractualizando la opciónVolumeal path del dierectorio html de este repositorio en tu máquina. Una forma rápida de hacerlo es, desde una terminal, muevete al directorio donde descargaste este repositorio y ejecuta:sed -i s#/path/al/directorio#$(pwd)#g webserver-podman-user@.container
TIP Aqui hay dos referencias que te pueden servir de guía: systemd: Template unit files de Fedora Magazine y Template files en la documentación de Quadltes.