¿Qué es Podman y por qué usarlo?
Podman (Pod Manager) es un motor de contenedores open source desarrollado por Red Hat que permite ejecutar, gestionar y orquestar contenedores y pods. Su principal característica frente a Docker es que no necesita un daemon centralizado para funcionar, lo que lo hace más seguro, ligero y fácil de integrar en entornos rootless (sin privilegios de root).
Diferencias clave con Docker
- Sin daemon: Docker usa un proceso dockerd en segundo plano. Podman lanza cada contenedor como un proceso hijo directo del usuario. No hay un único punto de fallo.
- Rootless nativo: Podman ejecuta contenedores sin permisos de root por defecto. Docker requiere configuración adicional (rootless mode experimental).
- Sin dependencia de Docker Hub: Podman usa el mismo formato de imágenes (OCI), pero no requiere un registro específico. Funciona con Docker Hub, Quay, registros privados, etc.
- Compatibilidad CLI: Los comandos de Podman son casi idénticos a los de Docker. Puedes crear un alias
alias docker=podmansin problemas. - Pods nativos: Podman maneja pods (grupos de contenedores) de forma nativa, similar a Kubernetes, sin necesidad de herramientas adicionales como Docker Compose.
Aquí tienes una comparación visual de los comandos más comunes:
# Docker | Podman
docker run | podman run
docker ps | podman ps
docker stop | podman stop
docker rm | podman rm
docker images | podman images
docker pull | podman pull
docker build | podman build
docker exec | podman exec
Instalación en Debian / Ubuntu
Instalar Podman es muy sencillo. En distribuciones basadas en Debian o Ubuntu basta con:
# Actualizar repositorios e instalar podman
sudo apt update
sudo apt install -y podman
# Verificar la instalación
podman --version
# Ejemplo de salida: podman version 4.9.3
Para versiones más recientes (por ejemplo, en Debian 12 estable puede venir Podman 4.x) puedes agregar el repositorio oficial de Kubic:
# Agregar repo oficial de Podman (Debian)
echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -fsSL https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_kubic_libcontainers_stable.gpg > /dev/null
sudo apt update
sudo apt install -y podman
Primer contenedor con Podman
Vamos a levantar un servidor web nginx con un solo comando, sin necesidad de sudo ni daemon:
# Descargar y ejecutar nginx en el puerto 8080
podman run -d --name mi-nginx -p 8080:80 nginx:alpine
# Verificar que el contenedor está corriendo
podman ps
# Probar desde otra terminal
curl http://localhost:8080
Si ves el HTML de bienvenida de nginx, ¡felicidades! Acabas de ejecutar tu primer contenedor con Podman, sin daemon y sin root.
Comandos básicos del día a día
Estos son los comandos esenciales para gestionar contenedores con Podman:
# Listar contenedores en ejecución
podman ps
# Listar todos los contenedores (incluyendo detenidos)
podman ps -a
# Ejecutar un contenedor interactivo (Ubuntu con bash)
podman run -it --name ubuntu-test ubuntu:latest bash
# Detener un contenedor
podman stop mi-nginx
# Iniciar un contenedor existente
podman start mi-nginx
# Eliminar un contenedor (debe estar detenido)
podman rm mi-nginx
# Eliminar contenedor incluso si está corriendo
podman rm -f mi-nginx
Una de las ventajas más notables de Podman es que no deja procesos zombies ni puertos ocupados después de detener un contenedor. Cada contenedor es simplemente un proceso más en el sistema, visible con ps aux.
Conclusión
Podman representa el futuro de la contenerización en Linux: más seguro, sin daemon, rootless por defecto y 100% compatible con el ecosistema OCI. Si estás migrando desde Docker o empezando desde cero, Podman es una opción sólida y moderna. En el próximo artículo exploraremos la gestión de imágenes, volúmenes y redes.