Tutorial de Podman
En los últimos años, la virtualización de contenedores ha adquirido cada vez más relevancia. En concreto, esta tecnología se popularizó con el lanzamiento de Docker en 2013 y actualmente forma parte de diferentes herramientas para controlar namespaces (en español, espacios de nombres). Una de las soluciones más interesantes es Podman, que originalmente se concibió como una herramienta de depuración para CRI-O, con el fin de facilitar el trabajo con grupos de Kubernetes. Sin embargo, el software se ha convertido rápidamente en un motor amplio e independiente para la gestión de contenedores.
Los namespaces o espacios de nombres permiten agrupar en un contenedor elementos seleccionados de un código (por ejemplo, la clase).
A continuación, descubrirás qué características hacen tan especial a Podman y cómo sacarle el máximo partido a esta herramienta de contenedores.
¿Qué es Podman?
Podman (abreviatura de Pod Manager) es un motor de contenedores lanzado por primera vez en febrero de 2018 por la empresa de software estadounidense Red Hat, conocida principalmente por sus soluciones empresariales de alto rendimiento para diferentes proyectos de código abierto, como Red Hat Enterprise Linux (RHEL) u OpenStack. Basándose en la experiencia de Docker, en un principio estaba previsto que Podman no fuese un motor independiente, sino una herramienta de depuración sencilla para CRI-O, un plan que pronto se rechazó.
Este software de contenedores es similar a Docker en muchos aspectos y utiliza, por ejemplo, el mismo intérprete 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 establecer el alias alias docker=podman. Así, cambiar de Docker a Podman suele ser relativamente sencillo. La innovación clave que Podman trae consigo es que renuncia a un daemon central como instancia de control para cada uno de los contenedores. Esto brinda la oportunidad de acceder a las distintas aplicaciones virtualizadas sin privilegios de root.
En los sistemas operativos Unix/Linux se denomina daemon a un programa que se ejecuta en segundo plano y que pone a disposición del usuario servicios y procesos concretos.
Podman funciona en las principales distribuciones 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 directamente desde la configuración del paquete del sistema correspondiente.
En nuestra Digital Guide también encontrarás información sobre "Podman vs. Docker: ¿dónde se encuentra el futuro del mundo de los contenedores?".
Diseño y funciones principales de Podman
Además de renunciar a un daemon central, otra de las características más destacadas de Podman son los denominados pods. Estos pods, inspirados en el concepto de los pods de Kubernetes, son la fusión de varios contenedores en un namespace común de Linux que comparten recursos concretos. De esta manera, se pueden combinar una amplia variedad de aplicaciones virtualizadas.
Como ya hemos mencionado, es posible ejecutar los contenedores en el ordenador principal como usuario habitual sin privilegios de root, si bien dentro de un contenedor los procesos sí son ejecutados mediante root. Podman lo consigue recurriendo a los namespace de usuario del núcleo de Linux, que asignan privilegios especiales y un ID de usuario a los procesos. El hecho de que los contenedores en realidad se ejecuten como administrador dota al entorno virtualizado Podman de un elevado estándar de seguridad.
El núcleo de un pod está integrado por los llamados contenedores infra, que son los únicos responsables de la funcionalidad de la fusión. Con este fin, los contenedores infra gestionan y garantizan recursos tales como namespaces, puertos de red, CPU, memoria principal, etc. Además, en lo que respecta a la gestión de pods, Podman apuesta por la herramienta de supervisión Conmon, guardada en el disco C, que controla cada uno de los componentes virtualizados y, entre otras cosas, asegura los logs. Además, la herramienta actúa como una interfaz para el terminal de cada contenedor. Como tiempo de ejecución para el contenedor, Podman utiliza el software runC, que también está integrado en muchas otras soluciones como Docker o rkt.
Tutorial de Podman: primeros pasos con Podman
Una vez presentadas las características básicas de Podman, en el siguiente tutorial resumimos los puntos principales para empezar a trabajar con este motor de contenedores.
Instalar Podman en Linux
Podman es un software para ejecutar contenedores de Linux. En las distribuciones 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 instalación pueden encontrarse directamente en la gestión de paquetes del respectivo software e instalarse usando los comandos de terminal típicos del sistema.
Como alternativa a los paquetes nativos en el repositorio del sistema, el proyecto Kubic en opensuse.org ofrece distintos paquetes de instalación de Podman para distintas distribuciones 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 contenedores en dispositivos con sistemas operativos Windows o MacOS. El requisito sine qua non es que tengas desde dichos dispositivos acceso a una instalación de Linux, que puede ejecutarse desde una máquina virtual en el host o bien ser accesible desde la red.
Si tienes la posibilidad de acceder a dicha instalación, solo necesitarás un cliente remoto Podman con el que establecer una conexión SSH con servidor backend de Podman.
La información sobre la conexión SSH debe introducirse en el archivo de configuración Podman-remote.conf. Encontrarás información detallada sobre su uso e instalación en el tutorial de cliente remoto Podman en GitHub.
¿Cómo funciona la gestión de imágenes de contenedor con Podman?
En lo que respecta a las características y la sintaxis, Podman se basa en Docker. Por eso, al configurar el contenedor deseado puedes acceder a la gran biblioteca 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 aplicaciones que desees como, por ejemplo, la última versión de Ubuntu:
podman pull hub.docker.com/_/ubuntu:latest
La ruta oficial de almacenamiento de cada una de las imágenes es la ruta de acceso local /.local/share/containers/, en la que cada usuario tiene su propio espacio de nombre. Así, la configuración del contenedor propio, por ejemplo, está separada de la configuración root. Con el siguiente comando conseguirá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