En los últimos años, el uso contenedores ha transformado la manera en que las aplicaciones se desarrollan, se despliegan y se administran, siendo Docker el primero que popularizó este concepto a gran escala simplificando su creación, manejo y gestión, permitiendo que los desarrolladores aislaran sus entornos y dependencias de forma eficiente y sobre todo de forma sencilla, sin embargo, con el paso del tiempo surgieron nuevas alternativas más seguras, modulares y más alienadas a las expectativas open source del mundo Linux, y una de ellas es Podman.
Podman es una herramienta que ha despertado gran interés en entornos empresariales debido a que es 100% open-source, no depende de componentes propietarios como si lo hace Docker, por tanto, no está sujeta a decisiones de negocio de Docker que limitan funcionalidades y sobre todo porque Podman es en su mayoría compatible con Docker, lo que hace que una migración no requiere repensar todo de cero.
De esta manera, Podman se ha convertido en una opción muy interesante y atractiva para quienes buscan mantener la compatibilidad con Docker, aunque sin depender de un servicio centralizado que corra con privilegios de root y que su arquitectura sin daemon (servicio central) lo convierte en una opción segura para entornos donde se necesita seguridad y portabilidad.
En este artículo explicaremos qué es Podman, sus principales características, beneficios, medidas de seguridad, y algunos casos de uso prácticos que muestran por qué su popularidad sigue creciendo dentro del área de DevOps y entornos Linux.
Contenido
¿Qué es Podman?
El nombre Podman viene de la abreviatura de Pod Manager; es una herramienta de gestión de contenedores y pods desarrollada por la empresa Red Hat, de gran trayectoria dentro del mundo Linux y con gran experiencia en gestión de infraestructura con OpenShift. Red Hat creó Podman como una alternativa completamente libre a Docker, conservando compatibilidad aunque con una arquitectura más segura.
En pocas palabras, podemos decir que Podman permite crear, ejecutar, administrar y mantener contenedores OCI (Open Container Initiative) sin la necesidad de un servicio central (daemon), a diferencia de Docker, que si bien es compatible con OCI, requiere del servicio llamado dockerd corriendo en segundo plano y como root, mientras que Podman se puede correr sin privilegios de sistema. Es esta diferencia en la arquitectura la que mejora significativamente la seguridad de los contenedores, algo que se le suele criticar a Docker.
Podman está basado en una arquitectura pensada para usar lo básico del sistema, es decir para utilizar procesos estándar del sistema operativo sin ningún privilegio adicional, por eso, cuando se ejecuta un contenedor, este no se aloja dentro de un servicio con privilegios elevados, sino que se lanza directamente como un proceso hijo del usuario que lo ejecuta, esto significa que cada contenedor puede ser administrado directamente con herramientas tradicionales del sistema como ps, top, kill, etc., y no hay un servicio central con privilegios de root supervisando todo como si pasa en Docker, en otras palabras, los contenedores en Podman están tan integrados al sistema operativo host y se comportan como cualquier otro proceso de usuario.
Otro punto fundamental es su compatibilidad con Docker, donde los comandos de Podman son equivalentes a los de Docker, hasta el punto de que el usuario puede crear un alias docker=podman y seguir utilizando su flujo de trabajo habitual sin cambios significativos, además, Podman puede trabajar con imágenes OCI o imágenes Docker, utilizando el mismo formato estándar de contenedor, por lo que no hay pérdida de compatibilidad, por ejemplo, con los Dockerfiles.
Podman también introduce el concepto de pods, algo inspirado en Kubernetes, donde un pod es un grupo de uno o más contenedores que comparten recursos de red y almacenamiento; esto permite simular localmente infraestructuras similares a las que se utilizan en Kubernetes, facilitando el desarrollo y las pruebas antes del despliegue en un clúster real.
Principales características de Podman
Podman brinda una serie de características que lo diferencian de otras herramientas de gestión de contenedores como Docker y es lo que explica su crecimiento en los últimos años para convertirse en una alternativa sería hoy día y con bastante futuro.
En primer lugar, su arquitectura sin servicio central crea un entorno mucho más seguro al no requerir permisos de root, por lo que con Podman se reduce la posibilidad de escalamiento de privilegios porque cada contenedor se ejecuta directamente bajo el contexto del usuario que lo creó, y si ese usuario no tiene privilegios elevados, los contenedores tampoco los tendrán, esta política llamada popularmente «sin daemon, sin root» se considera como una de las mejores prácticas de seguridad en Linux.
En segundo lugar, Podman es totalmente compatible con los estándares OCI, tanto para las imágenes como para los contenedores, esto es lo que garantiza compatibilidad no solo con Docker sino también con otras herramientas como Buildah (para construir imágenes) y Skopeo (para copiar, firmar o inspeccionar imágenes en distintos registros), de hecho, estas tres herramientas forman parte del mismo conjunto recomendado tanto por Red Hat como por la comunidad.
Otra característica importante es el soporte para pods, algo que Docker no incorpora, que permite que en Podman se agrupen varios contenedores en un mismo espacio de red, compartiendo puertos, interfaces y volúmenes. Esta característica facilita la simulación de microservicios en entornos locales, algo que resulta extremadamente útil para desarrolladores que trabajan con Kubernetes.
Por último, Podman incluye una API REST compatible con Docker, lo que facilita la transición entre uno y otro, así como una interfaz gráfica llamada Podman Desktop, que simplifica la gestión visual de imágenes, pods y contenedores en estaciones de trabajo, de esta manera, ofrece tanto una línea de comandos para administradores avanzados como un entorno más visual para desarrolladores y usuarios menos experimentados.
Beneficios y ventajas
La implementación de Podman aporta numerosas ventajas tanto para equipos de desarrollo como para administradores de sistemas. Uno de los más importantes es la seguridad, al no requerir un servicio central con permisos de root, se elimina una de las puertas de entrada a ataques más comunes en sistemas basados en contenedores, como cada contenedor se ejecuta como un proceso independiente del usuario, se reduce el riesgo de escaladas de privilegios, reduciendo la superficie de ataque.
Otra ventaja clave es facilitar tanto el despliegue de nuevos servidores como la gestión de los contenedores, dado que no hay un servicio central, no hay necesidad de iniciarlo, detenerlo ni reiniciarlo, los contenedores se lanzan directamente y se comportan como procesos normales y con permisos de usuarios normales sin privilegios, lo que transforma la administración del sistema en algo más sencillo, flexible, predecible y transparente.
Esto también significa que la integración con las herramientas tradicionales de monitoreo y control de procesos es bastante más sencilla porque, al ser un proceso como cualquier otro, es posible gestionar las métricas y controlar los procesos con los mismos comandos básicos que se usan para cualquier proceso.
En términos de compatibilidad, Podman es completamente compatible con Docker al utilizar los mismos estándares abiertos,tanto las imágenes como los comandos y los flujos de trabajo que se hayan implementado para Docker pueden reutilizarse sin modificaciones en Podman, lo que sin dudas facilita enormemente la migración o incluso la coexistencia de ambos entornos dentro de la misma infraestructura.
Además, Podman se integra muy bien con Kubernetes, permite generar archivos de configuración YAML a partir de contenedores o pods locales mediante el comando “podman generate kube”, lo que simplifica el pasaje de un entorno de desarrollo al despliegue en producción, lo que convierte a Podman en una herramienta muy atractiva para grandes entornos de Kubernetes.
Desde el punto de vista de la eficiencia, Podman aprovecha las capacidades nativas del kernel de Linux sin depender de capas adicionales, esto reduce el consumo de recursos y mejora la velocidad de arranque de los contenedores, donde al ser independiente y no tener un servicio central, ningún problema heredado por este puede afectar a Podman como sí pasa en Docker y, a diferencia de este, Podman también permite ejecutar múltiples pods y contenedores simultáneamente sin penalizar el rendimiento general del sistema.
Seguridad en Podman
Desde su diseño, Podman se creó pensando como una alternativa que elimina los riesgos de ejecutar servicios con privilegios, como pasa en Docker, donde el servicio dockerd corre típicamente como root y todos los contenedores dependen de él, y aunque se configure para crear los contenedores como usuario, el servicio seguirá estando como root, lo que implica que una vulnerabilidad en el servicio podría comprometer todo el sistema, Podman elimina ese posible punto de falla al no usar servicio alguno.
Esto se conoce como el modo rootless y es quizá su mayor característica de seguridad, además, gracias al uso de user namespaces, un mismo usuario puede ejecutar contenedores completamente aislados entre sí sin necesidad de permisos administrativos, donde cada contenedor corre dentro de un espacio de usuario distinto, lo que impide que tenga acceso al sistema base o a otros procesos fuera de su entorno, lo que resulta ideal para estaciones de trabajo compartidas, entornos de desarrollo y servidores donde se prioriza el principio de menor privilegio.
Además, Podman ofrece integración con SELinux, que restringe las capacidades del proceso dentro del contenedor, con SELinux, los contenedores se ejecutan bajo contextos especiales que limitan su acceso a archivos y recursos del host.
Por último, su arquitectura basada en procesos individuales normales facilita la auditoría y el monitoreo, dado que cada contenedor es un proceso normal del usuario que puede ser monitoreado y registrado fácilmente mediante herramientas estándar del sistema operativo.
Casos de uso
Podman se adecua a una amplia variedad de casos de uso, que van desde entornos de desarrollo hasta entornos de producción, sin embargo, uno de los usos más comunes es como reemplazo directo de Docker en dispositivos de trabajo de desarrolladores, porque al no requerir permisos de superusuario puede ser usado sin problemas por los desarrolladores cuando la seguridad del dispositivo es administrada por la empresa y no por el usuario, el cual está limitado por seguridad o bajo monitoreo de su empleador.
Luego, en servidores Linux, Podman destaca como una herramienta para ejecutar contenedores en sistemas sin servicio centralizado como ya hemos dicho, sin embargo, sí permite generar servicios individuales por cada contenedor e integrándose, por ejemplo, con Systemd, permitiendo generar unidades de servicio que controlan automáticamente el ciclo de vida de los contenedores, esto es especialmente útil para desplegar microservicios o tareas programadas sin necesidad de herramientas externas.
Es decir, permite a partir de los contenedores generar servicios de sistema como forma de automatizar su gestión como si fuera cualquier servicio, aunque sin depender de un servidor central como sí pasa en Docker.
Otro caso frecuente es su uso en entornos educativos, talleres, prácticas y de laboratorio, donde la ejecución sin root es importante para evitar daños al sistema anfitrión, donde los estudiantes o los autodidactas pueden experimentar con contenedores y pods sin comprometer la estabilidad del sistema operativo.
Podman también se emplea en pipelines de integración y entrega continua (CI/CD), donde al poder ejecutarse sin privilegios elevados, se integra fácilmente en entornos automatizados donde los jobs pueden construir y ejecutar imágenes de contenedor sin correr riesgos innecesarios.
En el ámbito más empresarial, Podman se utiliza como parte de entornos híbridos junto con Kubernetes y OpenShift, donde los desarrolladores crean y prueban pods localmente para luego exportarlos en archivos YAML para desplegarlos en el clúster.
Conclusión
Podman representa una alternativa más segura para contenedores que Docker porque, por diseño, sin servicio central y su compatibilidad con Docker lo colocan como una alternativa madura, moderna y eficiente, lejos de ser un reemplazo improvisado. Podman ofrece una arquitectura más integrada con los principios de Linux y con las necesidades actuales de seguridad y automatización sin resignar ninguna cualidad de Docker.
Podman no solo es una alternativa a Docker: es una plataforma pensada para superar a Docker por ser ligera, más segura, flexible y alineada con los valores del software libre; adoptarlo significa apostar por una gestión de contenedores más transparente, segura y conforme a los estándares que definirán la próxima generación de infraestructura cloud nativa.