231 - ¿Es Podman la alternativa a Docker?
¿Que es Podman?¿Es realmente Podman una alternativa válida a Docker?Introducción y primeros pasos a Podman. Uso y funcionamiento.
Después de toda la paliza psicológica, y en el buen sentido de la palabra, que te he dado durante estos dos últimos años, en referencia a las bondades de Docker. Después de haberte presentado Kitematic en el episodio 230 del podcast. Ahora te traigo una alternativa a Docker. Pues si. Aquí se trata de probarlo todo, y cuantas mas soluciones y alternativas tengas al alcance de tus dedos, mejor que mejor.
Como ya te he comentado en mas de una ocasión, prefiero AppImage, frente a snap o flatpak. Y de la misma manera, una vez probado Podman, decirte que lo prefiero como alternativa a Docker. Y básicamente lo prefiero por una razón, no necesitas tener un servicio corriendo en segundo plano y por esto, ya solo por esto, lo prefiero.
Pero, ¿que es Podman?¿En que se diferencia de Docker?¿Que ventajas e inconvenientes tiene?
¿Es Podman la alternativa a Docker?
¿Que es Podman?
Pero, empecemos por el principio ¿Que es Podman?. Se trata de una herramienta para crear y mantener contenedores. Si, en el mundo de los contenedores hay más allá de Docker. Con Docker y los contenedores pasa como con Danone y los yogures. Hemos terminado por asimilar la marca a lo que hace referencia.
Se trata de una herramienta Open Source que no necesita de un demonio corriendo en segundo plano para su funcionamiento, y que te va a permitir buscar, ejecutar, desplegar, implementar aplicaciones utilizando contenedores.
¿Tengo que aprender como funciona Podman?
Y ahora que ya empiezo a manejarme con Docker o que lo controlo suficientemente ¿tengo que aprender un nueva herramienta?. Pues esta es la primera buena noticia que tengo que darte. No necesitas aprender una nueva herramienta. Es mas, puedes crar un alias para el comando podman
, es decir alias docker=podman
y seguir trabajando como si nada. Simplemente espectacular.
Docker vs Podman. ¿Es la alternativa a Docker?
Evidentemente antes de continuar con Podman, te estarás preguntado que diferencias y parecidos existen con Docker. De la misma forma, te estarás preguntando sobre ventajas e inconvenientes de utilizar una herramienta frente a la otra.
- Una de las características de Docker es que utiliza un único servicio para dominar a todos los contenedores en todos sus aspectos, desde la ejecución, hasta el almacenamiento, pasando por las redes. Esto tiene sus ventajas e inconvenientes, porque desde luego con un único servicio controlas todo. Pero, ¿que sucede si ese servicio deja de funcionar?. Esto es uno de los inconvenientes que viene a resolver Podman en tanto en cuanto, no utiliza ningún servicio global, con lo que es completamente independiente.
- Podman la gestión que hace de los contenedores es descentralizada, y no requiere de un servicio global.
- Otra de las características que diferencia a Podman de Dokcer es que no solo puede ejecutar contenedores sino que además es capaz de ejecutar pods, de ahí el nombre de esta herramienta.
- Aunque Podman es capaz de crear imágenes de la misma forma que lo hace Docker, lo cierto es que tiene una herramienta específicamente diseñada para esto. Se trata de
buildah
. Esta herramienta no solo te permite manipular una imagen sino crear una imagen a partir de un contenedor en funcionamiento. - Olvídate de ejecutar contenedores como
root
. Podman tiene la habilidad de ejecutar los contenedores sin necesidad de que ganes derechos de administrador. Ya conoces las ventajas de todo esto. Pero además piensa que puedes ejecutar un contenedor con un usuario concreto que tenga un permiso necesario para hacer uso de alguna característica de tu sistema operativo. Por ejemplo en el caso de las Rasbperry, si vas a utilizar losgpio
necesitas que el usuario pertenezca a este grupo; esto con Podman lo tienes resuelto. - Otra de las características que me ha gustado es la integración que tiene Podman con Systemd, de forma que podemos correr contenedores que tengan habilitado Systemd.
- Una clara ventaja de Docker frente a Podman es la aceptación e implantación del primero, frente al desconocimiento, a día de hoy del segundo.
- Por otro lado, también está la cantidad de herramientas y tecnologías construidas en torno a Docker, y de las que a día de hoy adolece por completo Podman. Lo cual no quiere decir, que no lleguen en algún momento. Por ejemplo, en el caso de
docker-compose
, he visto que existe herramienta para Podman, aunque todavía no he llegado a probarla.
Familiarizándote con Podman
Como si nunca hubieras trabajado anteriormente con contenedores, vamos a dar un paseo en torno a alguna de las opciones que tienes a tu disposición.
Recuerda, como te he comentado anteriormente, que si estás muy habituado al uso de Docker siempre puedes utilizar el alias
.
La ayuda
Lo primero es la ayuda. No es necesario que recurras a la documentación en línea. Desde el propio terminal, tienes al alcance de tus dedos toda la información necesaria para obtener ayuda sobre Podman.
Puedes utilizar la ayuda desde,
podman --help
podman <comando> --help
o también con las páginas man
,
man podman
man podman <comando>
En busca de imágenes
Algo que seguro que te estás preguntando es ¿Que sucede con todas tus imágenes?. Son totalmente compatibles. Puedes utilizar Docker Hub o cualquier otro repositorio de imágenes. En este sentido, puedes buscarlas directamente desde el terminal ejecutando la siguiente instrucción
podman search <imagen>
Además puedes utilizar filtros para realizar tus búsquedas. Por ejemplo, si quieres una imagen oficial, puedes utilizar el siguiente filtro --filter=is-official
.
De la misma forma puedes traer información particular o formateada según tus necesidades de la búsqueda, por ejemplo, si solo quisieras el nombre las imágenes, puedes ejecutar la instrucción siguiente,
podman search centos --filter=is-official --format {{.Name}}
Ahora is quisieras descargar la imagen, puedes hacerlo de la siguiente forma,
podman pull $(podman search centos --filter=is-official --format {{.Name}})
Puedes saber las imágenes que tienes descargadas en tu equipo utilizando la siguiente instrucción,
podman images
Ejecutando tu primer contenedor
Ya que te has descargado la imagen de CentOS lo suyo es que levantes tu primer contenedor y veas que ha y en su interior. De nuevo esto es tan sencillo, como ejecutar la siguiente instrucción,
podman run -it centos
Por supuesto que al igual que hacías con Docker, también puedes poner nombre a tus contenedores, de forma que la instrucción anterior sería,
podman run -it --name centos centos
Esto te permite trabajar con mas comodidad con los contenedores.
Como sabes cuando salgas de este contenedor en concreto se va a detener. Sin embargo, tienes la posibilidad de entrar posteriormente en el mismo contenedor utilizando la siguiente instrucción,
podman start -ia centos
¿Que contenedores tengo en marcha y cuales tengo parados?
De la misma forma que con Docker, puedes listar todos los contenedores que tienes en ejecución utilizando el comando,
podman ps
Y si quieres ver también los que están parados, tienes que utilizar podman ps -a
.
Limpiando el sistema
El siguiente paso sería sacar la basura y borrar todos aquellos contenedores e imágenes que no estás utilizando.
Para borrar un contenedor puedes utilizar podman rm <contenedor>
. Mientas que para borrar una imagen deberías utilizar podman rmi <imagen>
. Recuerda que las imágenes y los contenedores, las puedes borrar utilizando tanto su identificador como su nombre.
Igualmente también puedes utilizar prune
para realizar una limpieza general, tanto de contenedores como de imágenes.
Conclusión
Como ves las instrucciones son completamente equivalentes. El trabajo realizado por RedHat para conseguir una solución completamente equivalente, y que con un alias
lo puedes empezar a utilizar desde el principio es excelente.
Y ahora ¿que hacer? Trabajar con Docker o con la alternativa a Docker, con Podman. Y ¿realmente Podman es una alternativa a Docker?.
Yo por el momento voy a decantarme por Podman, en tanto en cuanto, son aparentemente equivalentes, y me ahorro tener un servicio continuamente corriendo en segundo plano.
¿Que vas a hacer tu?
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.
Más información,
Imagen de portada de Antoine Petitteville en Unsplash