Secciones

¿Qué es Podman?

Copiar URL

Podman (el administrador de pods) es una herramienta open source para desarrollar, gestionar y ejecutar los contenedores en los sistemas Linux®. Los ingenieros de Red Hat® y la comunidad open source desarrollaron Podman para gestionar el ecosistema completo de contenedores usando la biblioteca libpod. 

Su arquitectura inclusiva y sin daemons la convierte en una opción más segura y accesible para la gestión de los contenedores. Además, las funciones y las herramientas que la acompañan, como Buildah y Skopeo, permiten que los desarrolladores personalicen los entornos de contenedores según sus necesidades. 

Los pods son grupos de contenedores que se ejecutan juntos y comparten los mismos recursos, de manera similar a los pods de Kubernetes. Podman los gestiona a través de una interfaz de línea de comandos (CLI) sencilla y de la biblioteca libpod, la cual ofrece las API para administrar los contenedores, sus imágenes, los pods y los volúmenes. La CLI de Podman permite crear y admitir los contenedores que cumplan con la Open Container Initiative (OCI) y con los estándares del sector sobre los tiempos de ejecución y los formatos, aunque el proyecto complementario Buildah ofrece funciones más avanzadas para el desarrollo. Los usuarios pueden ejecutar Podman en distintas distribuciones de Linux, como Red Hat Enterprise Linux, Fedora, CentOs y Ubuntu

Cada pod consta de un solo contenedor de infraestructura (que lo mantiene en funcionamiento y conserva los espacios de nombre de los usuarios, los cual aísla los contenedores del host) y de la cantidad de contenedores comunes que se necesiten. En cada uno de estos últimos se realiza un seguimiento de los procesos y se buscan los contenedores que no funcionan, pero que no se pueden eliminar del entorno porque algunos de sus recursos todavía están en uso.

Podman sobresale entre los demás motores de contenedores porque es una herramienta sin daemons. Los daemons son procesos en segundo plano en el sistema que se encargan de ejecutar los contenedores sin una interfaz de usuario. Son los intermediarios entre el usuario y el contenedor. 

Si bien los daemons resultan convenientes para gestionar el entorno de los contenedores, también pueden generar puntos vulnerables en la seguridad, ya que muchos se ejecutan con privilegios de superusuario. En los sistemas Linux, la cuenta de superusuario posee todos los derechos, tiene acceso administrativo y no necesita la verificación de un administrador para leer los archivos, instalar los programas, editar las aplicaciones, entre otras tareas. Por eso, los daemons son el blanco ideal de los piratas informáticos que buscan controlar los contenedores e infiltrarse en el sistema host. 

Podman permite prescindir de ellos, de modo que los usuarios comunes pueden ejecutar los contenedores sin interactuar con un daemon que requiera permisos de superusuario. También pueden utilizar los contenedores sin privilegios, para crearlos, ejecutarlos y gestionarlos sin necesidad de contar con permisos de administración, lo cual genera un entorno de contenedores más accesible y con menos riesgos de seguridad. Además, Podman lanza cada contenedor con una etiqueta de Security-Enhanced Linux (SELinux), para que los administradores tengan mayor control sobre los recursos y las funciones que se incorporan a los procesos.

Los usuarios pueden activar Podman desde la línea de comandos para extraer los contenedores de un repositorio y ejecutarlos. Podman solicita el tiempo de ejecución configurado para crear el contenedor en funcionamiento.Sin embargo, dado que no cuenta con un daemon específico, se utiliza systemd (un administrador de sistemas y servicios de Linux) para aplicar las actualizaciones y mantener los contenedores en funcionamiento en segundo plano. Gracias a esto, puede generar unidades de control para los contenedores y ejecutarlos mientras se activa systemd automáticamente.

Los usuarios gestionan sus propios repositorios en el sistema, así como las unidades de systemd, para controlar el inicio automático y la gestión de los contenedores. Cuando los usuarios pueden administrar sus propios recursos y ejecutar los contendores sin privilegios de superusuario, se evitan ciertas acciones perjudiciales, como permitir que cualquier persona escriba los directorios /var/lib/containers, u otras prácticas relacionadas con la gestión del sistema que podrían exponer las aplicaciones a más problemas de seguridad. También se garantiza que cada usuario tenga conjuntos separados de contenedores e imágenes y pueda usar Podman al mismo tiempo y en el mismo host, sin interferir con los demás usuarios. Cuando cada uno finaliza su trabajo, puede enviar los cambios a un registro común para compartir su imagen con el resto.

Podman también implementa una API de RESTful (API de REST) para gestionar los contenedores. REST significa transferencia de estado representacional. Una API de REST es una interfaz de programación de aplicaciones que se ajusta a los límites del estilo de la arquitectura REST y permite la interacción con los servicios web de RESTful. La API le permite activar Podman desde plataformas como cURL, Postman, Advanced REST Client de Google, y muchas otras.

Podman es un motor de contenedores de arquitectura modular, por eso debe trabajar junto con herramientas como Buildah y Skopeo para crear y trasladar los contenedores. Buildah le permite crear los contenedores desde cero o usando una imagen como punto de partida. Skopeo traslada las imágenes de contenedores entre los distintos tipos de sistemas de almacenamiento, lo cual le permite copiar y pegar imágenes entre los registros como docker.io o quay.io y su registro interno, o entre diferentes tipos de almacenamiento en su sistema local. Este enfoque modular para la organización en contenedores genera un entorno flexible y ligero, ya que reduce la sobrecarga y aísla las funciones que necesita para alcanzar sus objetivos. Además, las herramientas más pequeñas y modulares pueden modificarse con mayor rapidez, y cada una puede enfocarse en un solo propósito. 

Imagínese que Podman, Buildah y Skopeo funcionan como una navaja suiza: la combinación de las tres sirve para casi todos los casos prácticos de los contenedores, y Podman es la cuchilla más grande. 

De manera predeterminada, Podman y Buildah usan runC, el tiempo de ejecución de la OCI, para poner en marcha los contenedores. Eso quiere decir que puede crear y ejecutar una imagen; o bien, ejecutar imágenes con formato Docker utilizando runC. Esta herramienta basada en el lenguaje Go lee una especificación del tiempo de ejecución, configura el kernel de Linux y, finalmente, crea e inicia los procesos del contenedor. También es posible usar Podman con otros entornos, como crun, cambiando algunos de los parámetros en la configuración.

Docker es una tecnología de organización en contenedores que posibilita la creación y el uso de los contenedores de Linux. La diferencia principal con Podman es que este tiene una arquitectura sin daemons. Los contenedores de Podman nunca han necesitado los privilegios de superusuario, mientras que Docker hace poco incorporó esta modalidad a su configuración de daemon. Docker es una herramienta integral para la creación y la gestión de los contenedores, mientras que Podman y sus herramientas asociadas, como Buildah y Skopeo, se especializan en algunos aspectos de la organización en contenedores, lo cual le permite personalizarlos en función de las necesidades de sus aplicaciones en la nube. 

Podman es una alternativa eficiente, pero ambas pueden funcionar juntas. Los usuarios pueden moverse fácilmente entre ellas si crean un alias de Docker para Podman (por ejemplo, alias docker=podman), y viceversa. Además, un paquete RPM denominado podman-docker puede colocar un "docker" en la ruta de la aplicación del sistema, que solicita acceso a Podman para los entornos donde se necesita el comando "docker", lo cual facilita la transición desde Docker. La CLI de Podman es similar al motor de contenedores de Docker, y es muy probable que los que sepan usar una de las herramientas se acostumbren fácilmente a la otra. 

Algunos desarrolladores utilizan las dos herramientas juntas: usan Docker durante la etapa de desarrollo de un programa, y lo transfieren a Podman en los entornos de tiempo de ejecución para aprovechar las funciones de seguridad mejorada. 

Podman es más útil para quienes ejecutan los contenedores sin Kubernetes ni OpenShift Container Platform. CRI-O es un motor de contenedores open source impulsado por la comunidad para la organización en contenedores de Kubernetes, como Red Hat OpenShift® Container Platform.

Podman cambió el panorama de los contenedores porque ofrece las mismas funciones de alto rendimiento que los motores más importantes, pero con la flexibilidad, la accesibilidad y la seguridad mejorada que buscan muchos de los equipos de desarrollo. Podman permite:

  • Gestionar las imágenes de contenedores y su ciclo de vida completo, incluida la ejecución, las conexiones en red, los controles y la eliminación.
  • Ejecutar y aislar los recursos para los pods y los contenedores sin privilegios de superusuario.
  • Admitir las imágenes de Docker y las que cumplan con la OCI, además de una CLI compatible con Docker.
  • Crear un entorno sin daemons para mejorar la seguridad y reducir el uso de recursos inactivos. 
  • Implementar una API de REST para admitir las funciones avanzadas de Podman.
  • Implementar las funciones de control y restauración para los contenedores de Linux con la herramienta Checkpoint/Restore in Userspace (CRIU). CRIU puede detener un contenedor en ejecución y almacenar el contenido y el estado de su memoria en el disco para reiniciar las cargas de trabajo más rápido.
  • Actualizar los contenedores de manera automática. Podman detecta si no se inicia un contenedor actualizado y lo restaura automáticamente a la última versión sin fallas, lo cual aumenta la confiabilidad de las aplicaciones. 

Podman se incluye con la suscripción a Red Hat Enterprise Linux para que pueda ejecutar los contenedores que cumplan con la OCI y que se hayan diseñado a partir de una imagen de base universal (UBI) confiable, segura y con soporte. Red Hat Enterprise Linux es un estándar para ejecutar los contenedores de Linux en los entornos empresariales y permite que los desarrolladores los pongan en marcha fácilmente, gestionen su implementación y agilicen el desarrollo de las aplicaciones nuevas. Las aplicaciones portátiles y los contenedores basados en Red Hat Enterprise Linux en la nube híbrida abierta le permiten conservar la agilidad y cumplir con los objetivos de transformación que vayan surgiendo.

La consola web de Red Hat Enterprise Linux simplifica la implementación y la administración diaria de sus sistemas con una interfaz web fácil de usar. Podman se encuentra disponible como un elemento de la consola web que le permite gestionar los contenedores y las imágenes. Controle la cantidad de memoria y CPU que utilizan los contenedores accediendo al host de contenedores y supervisando las cargas del sistema en el panel de control de la consola. Con ella puede simplificar las tareas comunes y las operaciones complejas para optimizar la gestión de los contenedores.

Red Hat Ansible® Automation Platform utiliza Ansible Playbooks para posibilitar la automatización de las funciones de Podman, como la instalación, la implementación de los contenedores y otras tareas que suelen consumir tiempo y recursos. 

Podman y las demás herramientas de contenedores basadas en los estándares abiertos convierten a Red Hat Enterprise Linux en la opción más conveniente para Kubernetes y Red Hat OpenShift, y en el sistema host de contenedores potente que ofrece soporte, estabilidad y seguridad durante la etapa de producción.

Artículos relacionados

ARTÍCULO

Diferencias entre los contenedores y las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema.

ARTÍCULO

¿Qué es la organización de los contenedores?

La organización en contenedores automatiza la implementación, la gestión, la escalabilidad y la conexión en red de los contenedores.

ARTÍCULO

¿Qué es un contenedor de Linux?

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen.