478 - Adiós Docker, bienvenido Podman
¿Cansado de #docker y las locuras de su demonio? ¿Te preocupa ejecutar tus contenedores como root? ¡Pues llegó #podman al rescate!
Antes de nada, aclarar, que no voy a abandonar Docker, al menos en el servidor. Y no lo voy abandonar simplemente por pereza. Simplemente no quiero tener que pasarme unos días cambiando todo lo que tengo en el VPS de Docker a Podman. Realmente solo de pensarlo me da mucha pereza, y no tengo claro, que este cambio me aporte ninguna ventaja, y seguro que si muchos dolores de cabeza. Sin embargo, en mi equipo personal he decidido hacer un Adiós Docker, bienvenido Podman.
¿Cansado de Docker y las locuras de su demonio? ¿Te preocupa ejecutar tus contenedores como root? ¿Quieres una alternativa más segura y fácil de usar? ¡Pues llegó Podman al rescate!
Podman es como Docker, pero sin el estigma de ejecutar cosas como root. Es como un amigo confiable que te ayuda a mantener tus aplicaciones en su propio espacio seguro, sin andar por ahí como un demonio peligroso.
Podman también es compatible con estándares abiertos, lo que significa que es como una estrella del rock, amado por todos y listo para actuar en cualquier escenario. Y si eres fan de la automatización, Podman es como un asistente personal que hace todo el trabajo duro por ti.
Adios Docker. Bienvenido Podman
En el episodio 474 titulado porqué cambié mi uso de Docker y otras preguntas, te comenté que no estaba utilizando Podman, simplemente por compatibilidad. Sin embargo, después de hacer el podcast, me quedé largo tiempo pensando, ¿de verdad era esa la razón?. Al igual que he comentado anteriormente para el servidor, en el caso de mi ordenador personal, me sucedía lo mismo. Simplemente era pereza. Pero, realmente, no tiene ningún sentido.
Como sabes en los últimos tiempos, y poco a poco, he ido cambiando mi uso de Docker, y probablemente a ti te haya sucedido algo similar. Has ido profundizando en su uso, y cada vez te encuentras mas cómodo con él.
Entre los últimos cambios que emprendí, fue precisamente el uso de Docker en modo rootless. Pero, yo me pregunto ¿porque utilizar Docker en modo rootless, si puedo utilizar Podman de forma nativa sin usuario root?. Así, que en estos últimos días he decidido hacer la migración en mi equipo personal a Podman de forma definitiva.
Esto me lleva precisamente a algo que te comenté en un episodio anterior sobre el uso de lo mas extendido. Sin embargo, en este caso, como con Linux, me voy a arriesgar totalmente y me voy a lanzar a reemplazar Docker.
¿Que es mejor Docker o Podman?
Esto es una de las primeras preguntas que me he hecho, cuando he decidido realizar el cambio de una tecnología por otra. Y claro, tanto Docker como Podman son herramientas de contenedores que se utilizan para crear, implementar y administrar aplicaciones en contenedores.
Docker ha sido una herramienta líder en la industria durante muchos años y ha sido ampliamente adoptada. Tiene una gran cantidad de documentación, soporte y una amplia comunidad de usuarios. Docker también ofrece una solución completa para todo el ciclo de vida de la aplicación, desde el desarrollo hasta la implementación.
Por otro lado, Podman es una herramienta de contenedores más nueva que ha ganado popularidad en los últimos años. A diferencia de Docker, Podman no requiere un daemon para ejecutar los contenedores, lo que lo hace más seguro y fácil de usar. Podman también es compatible con el estándar Open Container Initiative (OCI) y se integra bien con herramientas de automatización como Ansible.
En general, si ya estás familiarizado con Docker y tienes una infraestructura existente que funciona con Docker, puede ser más fácil y conveniente seguir utilizando Docker. Sin embargo, si estás comenzando desde cero o buscas una alternativa más segura y fácil de usar, Podman podría ser una excelente opción.
Pero al final, todo depende de ti y de tus necesidades y lo que quieras hacer con esto. Como te digo, si ya lo tienes todo con Docker…
¿Que ventajas tiene Podman frente a Docker?
- No requiere un daemon para ejecutar los contenedores, lo que lo hace más seguro y fácil de usar.
- Es compatible con el estándar Open Container Initiative (OCI), lo que significa que los contenedores son más portables y se pueden ejecutar en diferentes plataformas.
- Es posible ejecutar contenedores como usuario no root, lo que puede mejorar la seguridad y la gestión de permisos.
- Se integra bien con herramientas de automatización como Ansible, lo que puede facilitar la gestión de contenedores a gran escala.
- Proporciona una herramienta CLI (Command-Line Interface) completa para la gestión de contenedores, lo que facilita la automatización y la integración en otros sistemas.
Pero no todo son ventajas, también tiene sus inconvenientes.
- No tiene una interfaz de usuario (UI) gráfica, como la que tiene Docker con Docker Desktop. Esto no me preocupa lo mas mínimo. Ni a mi, ni a los que utilizamos Linux, porque el soporte de Docker Desktop llegó muy tarde en Linux, y no creo que se haya extendido en gran medida. Y, por otro lado, creo que los usuarios, que prefieren entorno gráfico, normalmente utilizan Portainer, que es una solución ampliamente utilizada.
- Podman no es tan ampliamente utilizado como Docker, lo que significa que puede haber menos documentación y soporte disponible.
- Puede haber problemas de compatibilidad con algunas imágenes Docker, ya que Podman utiliza un sistema de almacenamiento de imágenes diferente al de Docker.
- Podman no tiene una solución completa para todo el ciclo de vida de la aplicación, como Docker tiene con Docker Compose. O casi…, como veremos un poquito mas adelante.
Podman es una alternativa mas segura que Docker
Podman, tiene una serie de características que lo hace mas seguro a la hora de utilizar,
- No requiere un daemon para ejecutar los contenedores: A diferencia de Docker, Podman no necesita un daemon para ejecutar los contenedores, lo que hace que sea más seguro y fácil de usar. En lugar de eso, los contenedores son ejecutados directamente en el proceso del usuario que los crea, lo que minimiza la posibilidad de vulnerabilidades.
- Ejecución como usuario no root: Podman permite la ejecución de contenedores como usuarios no root, lo que puede mejorar la seguridad y la gestión de permisos. Docker, por defecto, ejecuta los contenedores como root, lo que puede ser una vulnerabilidad potencial.
- Estándares Open Container Initiative (OCI): Podman es compatible con el estándar Open Container Initiative (OCI), que define una especificación abierta para la gestión de contenedores. Esto significa que los contenedores de Podman son más portables y se pueden ejecutar en diferentes plataformas.
- Integración con herramientas de automatización: Podman se integra bien con herramientas de automatización como Ansible, lo que puede facilitar la gestión de contenedores a gran escala.
Tengo que decir, que siempre puedes utilizar Docker en modo rootless y por otro lado, también está integrado Docker con Ansible, como no podía ser de otra forma. Sin embargo, dado que Podman y Ansible, son hijos del mismo padre, parece que hay una mejor integración.
¿Se puede reemplazar por completo Docker con Podman?
En términos generales, Podman puede reemplazar a Docker en la mayoría de los casos. Ambas herramientas son capaces de crear, ejecutar y gestionar contenedores de manera similar, y muchas de las funcionalidades de Docker están disponibles también en Podman.
Sin embargo, hay algunas diferencias importantes a tener en cuenta al reemplazar Docker por Podman:
- Compatibilidad de imágenes: Aunque Podman admite el formato de imagen Docker y puede ejecutar muchas de las imágenes Docker existentes, no todas las imágenes son compatibles con Podman. Es posible que debas crear imágenes específicas para Podman o adaptarlas para que sean compatibles.
- Integración con herramientas: Si ya estás utilizando herramientas de automatización o orquestación como Docker Compose o Kubernetes, es posible que debas realizar algunos cambios para que funcionen con Podman.
- Experiencia del usuario: Si estás acostumbrado a trabajar con la interfaz gráfica de usuario (GUI) de Docker, es posible que te lleve algo de tiempo adaptarte a la CLI (Command Line Interface) de Podman.
En general, si estás dispuesto a adaptar tus imágenes y herramientas de automatización a Podman, y no te importa trabajar en la línea de comandos, entonces es posible que puedas reemplazar por completo a Docker con Podman. Sin embargo, si estás satisfecho con Docker y no necesitas las funcionalidades adicionales que ofrece Podman, entonces no hay necesidad de hacer el cambio.
¿Que grado de compatibilidad tiene Podman con Docker?
Podman es compatible con el formato de imagen de Docker, lo que significa que puedes utilizar muchas de las imágenes de Docker existentes con Podman. Podman también es compatible con la mayoría de los comandos de Docker, por lo que la mayoría de las operaciones que se pueden realizar con Docker también se pueden realizar con Podman.
Sin embargo, es importante tener en cuenta que Podman y Docker no son idénticos, y puede haber algunas diferencias en la forma en que se ejecutan las imágenes o se realizan ciertas tareas. Por ejemplo, Podman ejecuta los contenedores como un usuario no root de forma predeterminada, mientras que Docker ejecuta los contenedores como root. Además, la herramienta de gestión de redes de Podman es diferente a la de Docker.
En resumen, aunque hay algunas diferencias entre Podman y Docker, en general, Podman es compatible con Docker y puede utilizarse como una alternativa viable en muchos casos. La mayoría de las imágenes y comandos de Docker deberían funcionar bien en Podman.
¿Existe podman-compose?
Pues si, existe podman-compose es una herramienta que permite gestionar varios contenedores en una aplicación utilizando un archivo de configuración YAML similar al de Docker Compose.
Podman Compose proporciona una alternativa a Docker Compose para aquellos que prefieren utilizar Podman en lugar de Docker. Al igual que Docker Compose, Podman Compose permite definir y ejecutar aplicaciones compuestas por varios contenedores, como aplicaciones web con base de datos, servicios de mensajería y otras aplicaciones complejas.
Con Podman Compose, puedes definir servicios, volúmenes, redes y otros componentes de tu aplicación en un archivo YAML, y luego ejecutarlos en conjunto utilizando un solo comando. Además, Podman Compose puede integrarse con otros herramientas de automatización, como Ansible, lo que permite automatizar completamente el proceso de creación y gestión de aplicaciones en contenedores.
¿Puedo subir imágenes a Docker Hub con Podman?
Sí, puedes subir imágenes a Docker Hub utilizando Podman. Podman es compatible con el formato de imagen de Docker, lo que significa que las imágenes que se crean con Podman pueden ser utilizadas con Docker y viceversa.
Para subir una imagen a Docker Hub con Podman, primero debes crear la imagen utilizando el comando «podman build» y etiquetarla con un nombre que incluya tu nombre de usuario de Docker Hub y el nombre de la imagen. Por ejemplo,
podman build -t miusuario/miimagen:tag .
Una vez creada la imagen, tan solo tienes que empujar con Podman utilizando el siguiente comando,
podman push miusuario/miimagen:tag docker.io/miusuario/miimagen:tag
Evidentemente, necesitarás tener una cuenta en Docker Hub y estar conectado a ella a través de la CLI de Podman antes de poder subir imágenes. Para hacerlo, puedes utilizar el comando podman login
e ingresar tus credenciales de Docker Hub.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Hola! Bienvenido al club de los «no docker anymore» 🙂 Se me hace raro que no hayas mencionado buildah, ni tampoco lo que supone tener podman en vez de docker. Ya sabes, todo el tema de cgroups, mem, cpu etc. no es tan sencillo de manejar como con docker y usando permisos de superusuario. Ejecutar contenedores rootless en realidad no es complicado pero si das el siguiente paso lógico (k8s por ejemplo), ésto no funciona directamente sin tunear el sistema. Molaría mucho un artículo tuyo en ésta cuestión, pues lo explicas todo muy bien. Abrazotes.
Podman si tiene una interfaz UI, se llama podman desktop
https://github.com/containers/podman-desktop
tambien hay uno de la comunidad se llamada Pods, GTK4 y Rust
https://github.com/marhkb/pods
Buenas! Muchas gracias por el episodio. Estaba escuchando el episodio y vi que Red Hat tiene desarrollado Podman Desktop. Lo has visto? Alguna opinión?
Saludos!