En los últimos años, la vi­r­tua­li­za­ción de co­n­te­ne­do­res ha adquirido cada vez más re­le­va­n­cia. En concreto, esta te­c­no­lo­gía se po­pu­la­ri­zó con el la­n­za­mie­n­to de Docker en 2013 y ac­tua­l­me­n­te forma parte de di­fe­re­n­tes he­rra­mie­n­tas para controlar na­me­s­pa­ces (en español, espacios de nombres). Una de las so­lu­cio­nes más in­te­re­sa­n­tes es Podman, que ori­gi­na­l­me­n­te se concibió como una he­rra­mie­n­ta de de­pu­ra­ción para CRI-O, con el fin de facilitar el trabajo con grupos de Ku­be­r­ne­tes. Sin embargo, el software se ha co­n­ve­r­ti­do rá­pi­da­me­n­te en un motor amplio e in­de­pe­n­die­n­te para la gestión de co­n­te­ne­do­res.

Nota

Los na­me­s­pa­ces o espacios de nombres permiten agrupar en un co­n­te­ne­dor elementos se­le­c­cio­na­dos de un código (por ejemplo, la clase).

A co­n­ti­nua­ción, de­s­cu­bri­rás qué ca­ra­c­te­rí­s­ti­cas hacen tan especial a Podman y cómo sacarle el máximo partido a esta he­rra­mie­n­ta de co­n­te­ne­do­res.

¿Qué es Podman?

Podman (abre­via­tu­ra de Pod Manager) es un motor de co­n­te­ne­do­res lanzado por primera vez en febrero de 2018 por la empresa de software es­ta­dou­ni­de­n­se Red Hat, conocida pri­n­ci­pa­l­me­n­te por sus so­lu­cio­nes em­pre­sa­ria­les de alto re­n­di­mie­n­to para di­fe­re­n­tes proyectos de código abierto, como Red Hat En­te­r­pri­se Linux (RHEL) u OpenStack. Basándose en la ex­pe­rie­n­cia de Docker, en un principio estaba previsto que Podman no fuese un motor in­de­pe­n­die­n­te, sino una he­rra­mie­n­ta de de­pu­ra­ción sencilla para CRI-O, un plan que pronto se rechazó.

Este software de co­n­te­ne­do­res es similar a Docker en muchos aspectos y utiliza, por ejemplo, el mismo in­té­r­pre­te de línea de comandos que el estándar de la industria. Eso hace que sea incluso posible usar los típicos comandos de Docker en Podman. Para ello solo es necesario es­ta­ble­cer el alias alias docker=podman. Así, cambiar de Docker a Podman suele ser re­la­ti­va­me­n­te sencillo. La in­no­va­ción clave que Podman trae consigo es que renuncia a un daemon central como instancia de control para cada uno de los co­n­te­ne­do­res. Esto brinda la opo­r­tu­ni­dad de acceder a las distintas apli­ca­cio­nes vi­r­tua­li­za­das sin pri­vi­le­gios de root.

Nota

En los sistemas ope­ra­ti­vos Unix/Linux se denomina daemon a un programa que se ejecuta en segundo plano y que pone a di­s­po­si­ción del usuario servicios y procesos concretos.

Podman funciona en las pri­n­ci­pa­les di­s­tri­bu­cio­nes de Linux, como Ubuntu, Fedora, CentOS, Debian y RHEL, así como en Raspbian (sistema operativo Raspberry Pi). En la mayoría de los casos, el motor se puede instalar di­re­c­ta­me­n­te desde la co­n­fi­gu­ra­ción del paquete del sistema co­rre­s­po­n­die­n­te.

Consejo

En nuestra Digital Guide también en­co­n­tra­rás in­fo­r­ma­ción sobre "Podman vs. Docker: ¿dónde se encuentra el futuro del mundo de los co­n­te­ne­do­res?".

Diseño y funciones pri­n­ci­pa­les de Podman

Además de renunciar a un daemon central, otra de las ca­ra­c­te­rí­s­ti­cas más de­s­ta­ca­das de Podman son los de­no­mi­na­dos pods. Estos pods, in­s­pi­ra­dos en el concepto de los pods de Ku­be­r­ne­tes, son la fusión de varios co­n­te­ne­do­res en un namespace común de Linux que comparten recursos concretos. De esta manera, se pueden combinar una amplia variedad de apli­ca­cio­nes vi­r­tua­li­za­das.

Como ya hemos me­n­cio­na­do, es posible ejecutar los co­n­te­ne­do­res en el ordenador principal como usuario habitual sin pri­vi­le­gios de root, si bien dentro de un co­n­te­ne­dor los procesos sí son eje­cu­ta­dos mediante root. Podman lo consigue re­cu­rrie­n­do a los namespace de usuario del núcleo de Linux, que asignan pri­vi­le­gios es­pe­cia­les y un ID de usuario a los procesos. El hecho de que los co­n­te­ne­do­res en realidad se ejecuten como ad­mi­ni­s­tra­dor dota al entorno vi­r­tua­li­za­do Podman de un elevado estándar de seguridad.

El núcleo de un pod está integrado por los llamados co­n­te­ne­do­res infra, que son los únicos re­s­po­n­sa­bles de la fu­n­cio­na­li­dad de la fusión. Con este fin, los co­n­te­ne­do­res infra gestionan y ga­ra­n­ti­zan recursos tales como na­me­s­pa­ces, puertos de red, CPU, memoria principal, etc. Además, en lo que respecta a la gestión de pods, Podman apuesta por la he­rra­mie­n­ta de su­pe­r­vi­sión Conmon, guardada en el disco C, que controla cada uno de los co­m­po­ne­n­tes vi­r­tua­li­za­dos y, entre otras cosas, asegura los logs. Además, la he­rra­mie­n­ta actúa como una interfaz para el terminal de cada co­n­te­ne­dor. Como tiempo de ejecución para el co­n­te­ne­dor, Podman utiliza el software runC, que también está integrado en muchas otras so­lu­cio­nes como Docker o rkt.

Tutorial de Podman: primeros pasos con Podman

Una vez pre­se­n­ta­das las ca­ra­c­te­rí­s­ti­cas básicas de Podman, en el siguiente tutorial resumimos los puntos pri­n­ci­pa­les para empezar a trabajar con este motor de co­n­te­ne­do­res.

Instalar Podman en Linux

Podman es un software para ejecutar co­n­te­ne­do­res de Linux. En las di­s­tri­bu­cio­nes de Linux como CentOS, Ubuntu o Debian se instala de forma rápida y sencilla. En la mayoría de los casos, los paquetes de in­s­ta­la­ción pueden en­co­n­trar­se di­re­c­ta­me­n­te en la gestión de paquetes del re­s­pe­c­ti­vo software e in­s­ta­lar­se usando los comandos de terminal típicos del sistema.

Nota

Como al­te­r­na­ti­va a los paquetes nativos en el re­po­si­to­rio del sistema, el proyecto Kubic en opensuse.org ofrece distintos paquetes de in­s­ta­la­ción de Podman para distintas di­s­tri­bu­cio­nes y versiones.

Debian, Ubuntu, Raspbian:

sudo apt-get update -qq
sudo apt-get -qq -y install podman

Fedora, CentOS, Amazon Linux 2, RHEL 7:

sudo yum -y install podman

OpenSUSE:

sudo zipper install podman

Instalar Podman en Windows y MacOS

Podman se siente como en casa en entornos Linux. Sin embargo, también podrás utilizar este motor de co­n­te­ne­do­res en di­s­po­si­ti­vos con sistemas ope­ra­ti­vos Windows o MacOS. El requisito sine qua non es que tengas desde dichos di­s­po­si­ti­vos acceso a una in­s­ta­la­ción de Linux, que puede eje­cu­tar­se desde una máquina virtual en el host o bien ser accesible desde la red.

Si tienes la po­si­bi­li­dad de acceder a dicha in­s­ta­la­ción, solo ne­ce­si­ta­rás un cliente remoto Podman con el que es­ta­ble­cer una conexión SSH con servidor backend de Podman.

Nota

La in­fo­r­ma­ción sobre la conexión SSH debe in­tro­du­ci­r­se en el archivo de co­n­fi­gu­ra­ción Podman-remote.conf. En­co­n­tra­rás in­fo­r­ma­ción detallada sobre su uso e in­s­ta­la­ción en el tutorial de cliente remoto Podman en GitHub.

¿Cómo funciona la gestión de imágenes de co­n­te­ne­dor con Podman?

En lo que respecta a las ca­ra­c­te­rí­s­ti­cas y la sintaxis, Podman se basa en Docker. Por eso, al co­n­fi­gu­rar el co­n­te­ne­dor deseado puedes acceder a la gran bi­blio­te­ca de imágenes de Docker listas para su uso, que también se conoce como Docker Hub. Con la ayuda del comando pull podrás descargar las imágenes de las apli­ca­cio­nes que desees como, por ejemplo, la última versión de Ubuntu:

podman pull hub.docker.com/_/ubuntu:latest

La ruta oficial de al­ma­ce­na­mie­n­to de cada una de las imágenes es la ruta de acceso local /.local/share/co­n­tai­ne­rs/, en la que cada usuario tiene su propio espacio de nombre. Así, la co­n­fi­gu­ra­ción del co­n­te­ne­dor propio, por ejemplo, está separada de la co­n­fi­gu­ra­ción root. Con el siguiente comando co­n­se­gui­rás una vista general de las imágenes guardadas en el disco duro local:

podman images

Si lo que deseas es una lista de las imágenes root, deberás escribir el típico comando de Linux sudo:

sudo podman images
Ir al menú principal