Instalar y usar Podman en Debian 11

Introducción
Podman (POD MANager) es un motor de contenedores compatible con OCI desarrollado por Red Hat como reemplazo de Docker. Administra contenedores, imágenes y volúmenes mediante una interfaz de línea de comandos. A diferencia de Docker, Podman no requiere un daemon en ejecución: cada contenedor se lanza sin un proceso central permanente. Internamente usa la librería libpod para gestionar el ecosistema de contenedores.
Definición rápida: OCI significa Open Container Initiative, un estándar abierto para contenedores.
Qué necesitarás
- Un servidor con Debian 11.
- Acceso root o privilegios sudo.
Instalar Podman
El paquete Podman está en el repositorio por defecto de Debian 11. Instálalo con:
apt-get install podman -yVerifica la versión instalada:
podman --versionSalida esperada (ejemplo):
podman version 3.0.1Más información del entorno y la configuración local:
podman infoEjemplo de salida (recorte):
host:
arch: amd64
buildahVersion: 1.19.6
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: 'conmon: /usr/bin/conmon'
path: /usr/bin/conmon
version: 'conmon version 2.0.25, commit: unknown'
cpus: 2
distribution:
distribution: debian
version: "11"
eventLogger: journald
hostname: debian11
idMappings:
gidmap: null
uidmap: null
kernel: 5.10.0-8-amd64
linkmode: dynamic
memFree: 3365183488
memTotal: 4122267648
ociRuntime:
name: crun
package: 'crun: /usr/bin/crun'
path: /usr/bin/crun
version: |-
crun version 0.17
commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
os: linux
remoteSocket:
exists: true
path: /run/podman/podman.sock
security:
apparmorEnabled: true
capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
rootless: false
seccompEnabled: true
selinuxEnabled: falseNota: la salida muestra si el host usa cgroups v2, el runtime (crun o runc) y si está habilitado AppArmor/SELinux.
Importante: Podman funciona bien tanto en modo root como rootless. El modo rootless permite ejecutar contenedores sin privilegios de root, mejorando el aislamiento.
Añadir un registro OCI (registries)
Podman lee /etc/containers/registries.conf para localizar registros. Edita el archivo si necesitas definir registros inseguros o bloquear registros.
nano /etc/containers/registries.confAñade al final (si aplica):
[registries.insecure]
registries = [ ]
# If you need to block pull access from a registry, uncomment the section below
# and add the registries fully-qualified name.
# Docker only
[registries.block]
registries = [ ]Guarda y cierra. Usa esta configuración para añadir mirrors privados o permitir registros no TLS (solo en entornos controlados).
Uso básico de Podman: imágenes y contenedores
A continuación hay ejemplos comunes para empezar.
- Descargar una imagen Debian:
podman pull debianSalida de ejemplo:
Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/debian:latest...
Getting image source signatures
Copying blob 647acf3d48c2 done
Copying config 827e561138 done
Writing manifest to image destination
Storing signatures
827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc- Ver imágenes locales:
podman imagesSalida de ejemplo:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/debian latest 827e5611389a 11 days ago 129 MB- Ejecutar un contenedor Debian en segundo plano:
podman run -dit debian:latestSalida (ID del contenedor):
f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103- Listar contenedores en ejecución:
podman psSalida de ejemplo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f85c4df5ab78 docker.io/library/debian:latest bash 13 seconds ago Up 13 seconds ago competent_cori- Inspeccionar un contenedor:
podman inspect f85c4df5ab78Salida (recorte):
[
{
"Id": "f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103",
"Created": "2021-11-28T07:00:12.795302341Z",
"Path": "bash",
"Args": [
"bash"
],
"State": {
"OciVersion": "1.0.2-dev",
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 6881,
"ConmonPid": 6878,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-11-28T07:00:13.551753552Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Healthcheck": {
"Status": "",
"FailingStreak": 0,
"Log": null
}
},- Ver logs del contenedor:
podman logs f85c4df5ab78- Conectarse a la shell de un contenedor en ejecución:
podman exec -it f85c4df5ab78 /bin/bashEn el contenedor verás el prompt:
root@f85c4df5ab78:/#Salir con:
exitParar y eliminar contenedores e imágenes
- Parar un contenedor:
podman stop f85c4df5ab78- Ver contenedores (incluidos los detenidos):
podman ps -aSalida ejemplo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f85c4df5ab78 docker.io/library/debian:latest bash 3 minutes ago Exited (137) 10 seconds ago competent_cori- Eliminar un contenedor detenido:
podman rm f85c4df5ab78- Atajos para el último contenedor:
podman stop --latest
podman start --latest
podman rm --latest- Eliminar todos los contenedores (forzar):
podman rm -f `podman ps -aq`- Eliminar una imagen:
podman rmi 827e5611389aSalida ejemplo:
Untagged: docker.io/library/debian:latest
Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0ccBuenas prácticas, compatibilidad y alternativas
Cuándo elegir Podman
- Migrar a Podman si quieres ejecutar contenedores sin un daemon central y mejorar el modelo rootless. Ideal para entornos donde la seguridad y el aislamiento por usuario son prioritarios.
- Mantén Docker si dependes fuertemente de Docker Engine o de herramientas que requieren su API específica.
Compatibilidad y migración desde Docker
- Muchos comandos son compatibles (podman run, pull, images, ps). Para scripts que usan la API de Docker, existen wrappers y paquetes como podman-docker o podman-compose que ayudan la transición.
- Verifica archivos docker-compose.yml: algunas características avanzadas de Compose v2 pueden requerir adaptaciones.
Alternativas
- Docker: ampliamente soportado y maduro, con ecosistema grande.
- containerd + buildkit: solución modular para sistemas a gran escala.
Errores comunes y soluciones rápidas
- Problema: permisos en sockets. Solución: revisa /run/podman/podman.sock y permisos del usuario.
- Problema: fallos por cgroups v1/v2. Solución: confirma qué versión de cgroups usa tu kernel y ajusta systemd o parámetros del kernel.
Seguridad y privacidad
- Ejecuta contenedores rootless siempre que sea posible para reducir la superficie de ataque.
- Revisa capacidades de Linux y no otorgues CAP_SYS_ADMIN salvo que sea imprescindible.
- Mantén las imágenes actualizadas y audita paquetes dentro de las imágenes.
Lista de verificación rápida para administrador (role-based checklist)
- Instalar podman desde repositorio oficial.
- Verificar podman –version y podman info.
- Configurar /etc/containers/registries.conf si usas mirrors privados.
- Probar ejecución rootless con un usuario no root.
- Implementar políticas de escaneo de imágenes y actualización.
Atajos y cheat sheet
- Descargar imagen: podman pull
- Ejecutar en background: podman run -dit
- Acceder a shell: podman exec -it
/bin/bash - Listar contenedores: podman ps
- Ver imágenes: podman images
- Eliminar imagen: podman rmi
Mini-metodología para migrar de Docker a Podman (3 pasos)
- Evaluación: inventario de contenedores, dependencias de la API de Docker y usos de docker-compose.
- Prueba: instalar Podman en un entorno de staging y ejecutar pruebas con podman-docker/podman-compose.
- Migración: cambiar pipelines y scripts, monitorizar y mantener rollback plan con Docker en paralelo.
Preguntas frecuentes (FAQ)
¿Por qué Podman no necesita un daemon?
Podman lanza procesos de contenedor de forma individual y usa conmon/libpod para gestionarlos, evitando un proceso centralizado permanente.
¿Puedo usar docker-compose con Podman?
Hay proyectos y adaptadores (por ejemplo podman-compose o paquetes que proporcionan compatibilidad) que permiten ejecutar archivos docker-compose.yml con Podman, pero puede haber diferencias en características avanzadas.
Recursos adicionales
- Documentación oficial de Podman (sitio del proyecto) para guías avanzadas sobre imágenes, pods, y creación de contenedores.
Conclusión
Instalar Podman en Debian 11 es directo y ofrece una alternativa sin daemon a Docker. Tras la instalación puedes gestionar imágenes, ejecutar contenedores y adoptar prácticas rootless para mejorar la seguridad. Evalúa compatibilidad y realiza pruebas antes de migrar entornos de producción.
Resumen:
- Podman es compatible con OCI y opera sin daemon.
- Comandos básicos son muy parecidos a Docker.
- Revisa cgroups y permisos al migrar.
Materiales similares
Podman en Debian 11: instalación y uso
Apt-pinning en Debian: guía práctica
OptiScaler: inyectar FSR 4 en casi cualquier juego
Dansguardian + Squid NTLM en Debian Etch
Arreglar error de instalación Android en SD