Podman, el príncipe intrépido
Sin lugar a dudas la tecnología de contenedores ha supuesto toda una revolución. Y dentro de los actores que se encuentran presentes en la escena, el que ha destacado desde el principio es Docker. Sin embargo, no es el único, ni mucho menos, pero probablemente ha sido el que ha golpeado mas fuerte. Como digo, actualmente existen otros actores, que están luchando por arrebatarle el cetro de rey de contenedores, y entre estos actores, se encuentra Podman.
Así, en este tutorial, vas a poder comenzar desde las bases. No es necesario que tengas conocimientos de otros motores de contenedores. Se trata de pasar de no tener ningún conocimiento sobre contenedores a conseguir, no solo desplegar contenedores, sino también, crear tus propias imágenes, para futuros desarrollos o para lo que tu necesites.
Indicarte que, va a ser irremediable que haga referencia a Docker, pero, como te digo, no es necesario, en ningún caso, que tengas conocimientos sobre este, porque el tratamiento de Podman va a ser desde cero.
Podman, el príncipe intrépido
¿Que es Podman?
Podman es una herramienta nativa para Linux, de código abierto y que no utiliza ningún demonio ni procesos en segundo plano, pensada y diseñada para facilitar la búsqueda, ejecución, construcción, compartición y despliegue de aplicaciones utilizando la tecnología de contenedores e imágenes Open Containers Initiative (OCI).
¿Imágenes?¿Contenedores?
Y ¿que quiero decir todo esto? La creación e instalación de aplicaciones, tiene su complejidad. Si esto, ya es cierto a nivel de entorno de escritorio, imagina para aplicaciones que se utilicen en servidores. No solo esto, sino que además en muchas ocasiones, estas aplicaciones, no son un monolito, sino que están compuestas de varias piezas, y en ocasiones muchas piezas. A esto le tienes que añadir, que no todos los Linux donde vas a instalar esa aplicación son iguales. Pueden ser distribuciones distintas, distintas versiones del kernel de Linux, distintas versiones del software instalado, de las aplicaciones instaladas.
¿Como desarrollar una aplicación donde cada desarrollador tiene una plataforma de trabajo distinta?¿Y como hacerlo con garantías de que esto funcionará correctamente?¿O como probarlo en un entorno lo mas similar al entorno de producción?¿Como desplegarlo e implantarlo en distintos entornos de producción? Abstrayéndose del sistema operativo huésped, tienes que llevar todo lo que necesites para el correcto funcionamiento contigo.
Eso es precisamente lo que te permite la tecnología de los contenedores, y en concreto lo que te facilita Podman. Porque, una vez ya has creado el paquete que contiene tu aplicación, lo que se conoce como imagen ¿como distribuirla e instalarla?.
Las imágenes se guardan en almacenes, llamados repositorios, públicos o privados. Podman te permite buscar la imagen que necesites (el paquete que contiene tu aplicación), descargarlo en tu ordenador, servidor o en la infraestructura donde trabajes e instarlo.
Pero por supuesto, no se queda ahí, sino que también te permite crear tus propia imagen (el paquete que contiene tu aplicación) y subirla ese repositorio (almacén de aplicaciones empaquetadas).
¿Y que es un contenedor? Un contenedor no es mas que una imagen en ejecución.
Sobre la OCI
Open Container Initiative trata de crear estándares para la industria entorno a los formatos de contenedores y a runtimes. Esta iniciativa parte de Docker y otros líderes de la industria y se estableció en junio de 2015. Se encuentra bajo el auspicio de la Linux Foundation. Actualmente tiene dos especificaciones, la Runtime Specification y la Image Specification.
Básicamente se trata de que todo esto de los contenedores sea completamente transparente para ti, con independencia de si utilizas Docker, Podman o cualquier otro. Es decir, las instrucciones tienen que ser básicamente las mismas.
Es decir, si conoces Docker, puedes utilizar Podman, sin temor a equivocarte, con tan solo hacer un alias, es decir con ejecutar esta instrucción en Linux, alias docker=podman
. Por supuesto para esto, es necesario que tengas instalado Podman.
Características de Podman
Podman, tiene algunas características que lo hacen realmente interesante a los ojos de cualquier usuario,
- Tiene una sintaxis equivalente a la de Docker, como he comentado anteriormente. No es necesario que aprendas un nuevo juego de instrucciones para gestionar tus imágenes y contenedores con Podman.
- Los contenedores se pueden ejecutar como
root
o como un usuario sin derechos de administrador. - Podman gestiona el total ecosistema de contenedores incluyendo
pods
, contenedores, imágenes, volúmenes, y todo ello utilizando la librería libpod. Por supuesto, gestiona este ecosistema a lo largo del ciclo completo de vida de estos elementos. Creación, ejecución y mantenimiento. - Soporta diferentes formatos de imágenes incluyendo OCI y Docker.
- Podman solo funciona en plataformas Linux.
- No necesita de un demonio o una aplicación en segundo plano ejecutándose de forma permanente.
Sobre los contenedores
La tecnología de contenedores simplifica enormemente la distribución y uso de aplicaciones con todas sus dependencias y archivos de configuración. Con dependencias me refiero a las librerías que utilice, o pueda utilizar una aplicación. Una de las técnicas ampliamente utilizadas para facilitar el desarrollo de código y también, porque no, para ahorrar recursos, es utilizar librerías externas. Estas librerías son lo que se conoce como dependencias, en tanto en cuanto, son necesarias para el correcto desempeño de la aplicación.
Lo que inicialmente es una ventaja, es también su principal inconveniente. Por ejemplo, imagina que tu distribución tiene una versión X de una librería, mientras que la aplicación que quieres instalar necesita la versión Y de esa librería ¿que es lo que puedes hacer?. Esto lo resuelve, precisamente, la tecnología de contenedores. Dentro del paquete o imagen que contiene tu aplicación, también se incluirá la versión que necesite de las librerías o dependencias que requiera tu aplicación.
Sobre las imágenes
Ahora que ya tienes clara, la ventaja de distribuir tu aplicación en una imagen o instalar el servicio que necesitas con una imagen, la cuestión es ¿donde encontrar la imagen que necesito?.
Esto lo resuelve muy fácilmente Podman utilizando simplemente search
. Por ejemplo, imagina que quieres utilizar el conocido Pi-Hole en tu equipo. ¿De donde instalarlo? Tan sencillo como ejecutar,
podman search pi-hole
¿Y si quisieras utilizar BusyBox? BusyBox es un conjunto de herramientas creado específicamente para utilizar en sistemas operativos integrados de bajos recursos. De la misma forma que en el caso anterior,
podman search busybox
Esta instrucción, te devuelve algunos resultados como los que te muestro a continuación,
INDEX NAME DESCRIPTION STARS
docker.io docker.io/library/busybox Busybox base image. 2071
docker.io docker.io/radial/busyboxplus Full-chain, I... 35
docker.io docker.io/yauritux/busybox-curl Busybox with CURL 11
docker.io docker.io/vukomir/busybox busybox and curl 1
docker.io docker.io/arm64v8/busybox Busybox base image. 4
Y si ahora quieres poner en marcha alguna de las imágenes anteriores, por ejemplo, la primera, la que mas estrellas tiene, solo tienes que ejecutar,
podman run -it docker.io/library/
Una vez ejecutada la instrucción anterior, te encontrarás en el interior de un contenedor con la suite de herramientas BusyBox. Para salir del interior del contenedor simplemente ejecuta exit
.
Conclusión
Si no conocías nada relativo a los contenedores, has podido ver, o al menos imaginar, el potencial de esta tecnología, y las posibilidades que tiene. Y todo esto, con independencia de si te quieres dedicar al desarrollo de aplicaciones, o de si simplemente quieres consumir aplicaciones. Esto de los contenedores, no es mas que una facilidad para el uso e instalación de aplicaciones.
Por otro lado, si ya conocías Docker, has podido ver, que todo es tremendamente similar y parecido. No necesitas aprender ni nueva terminología, ni nuevas instrucciones. Simplemente es otra posibilidad mas.
En los siguientes capítulos te acompañaré primero en la instalación de Podman, y seguidamente en la gestión tanto de imágenes como de contenedores.
La entrada Podman, el príncipe intrépido aparece primero en Atareao.