Icono del sitio Ganda Software Factory

Podman: Una alternativa para la gestión de contenedores

¿Qué es podman? (portada)

Introducción a Podman

La contenerización ha transformado la manera en que desplegamos y gestionamos aplicaciones, proporcionando una solución eficiente y portátil para el desarrollo y la implementación de software. Exploraremos Podman, una herramienta de para la gestión de contenedores que ha ganado popularidad en el ecosistema Linux por su enfoque innovador y su capacidad para ofrecer una experiencia de usuario eficiente y segura.


¿Qué es Podman?

Podman, acrónimoi de Pod Manager, es una herramienta de contenerización diseñada para la construcción, compartición, implementación y ejecución de aplicaciones utilizando contenedores en entornos de sistemas operativos basados en Linux. A diferencia de otras herramientas como Docker, Podman se destaca por ser un daemonless (sin daemon), lo que significa que no requiere un proceso en segundo plano para ejecutarse, ofreciendo así una experiencia más segura y fácil de usar. Esto no sólo simplifica la arquitectura, sino que también mejora la seguridad y la integración con otras herramientas del sistema.

¿Cómo funciona?

Podman opera en torno a la filosofía de un contenedor por proceso. Cada contenedor es tratado como un proceso independiente, lo que simplifica la gestión y permite una mayor flexibilidad. La compatibilidad con el estándar de Open Container Initiative (OCI) garantiza la portabilidad de las imágenes y la interoperabilidad con otras herramientas de contenerización.

Podman utiliza conceptos similares a Docker, como imágenes y contenedores, pero su enfoque sin daemon permite a los usuarios ejecutar contenedores como procesos independientes. Esto mejora la seguridad y simplifica la integración con sistemas de gestión de procesos y herramientas existentes en el ecosistema Linux.

Características clave

Funcionalidades adicionales

Fortalezas de Podman

Debilidades de Podman

Arquitectura de Podman

La arquitectura utilizada por Podman se basa en la filosofía de «un contenedor por proceso». Cada contenedor se ejecuta como un proceso independiente en el sistema host, sin la necesidad de un demonio central. Esto proporciona un mayor aislamiento y facilita la gestión de contenedores.


Instalar Podman

Aunque el entorno principal de ejecución de Podman solo es compatible con sistemas operativos Linux, otros sistemas pueden utilizar el cliente remoto para gestionar sus contenedores en un entorno Linux. Este cliente remoto es prácticamente idéntico al programa estándar de Podman.

El cliente remoto sigue un modelo cliente-servidor. Es necesario tener Podman instalado en una máquina o máquina virtual Linux que también tenga el daemon SSH en ejecución. En el sistema operativo local, al ejecutar un comando de Podman, este se conecta al servidor a través de SSH. Luego, se conecta al servicio de Podman utilizando el socket de systemd.

Cada máquina Podman en Mac utiliza una máquina virtual basada en QEMU, mientras que en Windows utiliza una distribución virtualizada de Windows System for Linux (WSLv2).

En la página oficial de Podman puedes obtener información de cómo instalar Podman: Podman Installation (Inglés)

Instalar Podman en Mac

Instalar Podman a través de Homebrew:

brew install podman

Una vez instalado, hay que crear e inicializar la máquina de Podman:

podman machine init
podman machine start

Verificar la instalación:

podman info

También existe una versión de Podman Desktop disponible

Instalar Podman en Windows

Para instalar el cliente Podman en Windows hay que comenzar descargando el instalador para Windows. El instalador para Windows está disponible para su descarga desde la página de releases de Podman. El archivo del instalador para Windows tiene el nombre podman-#.#.#-setup.exe, donde los símbolos # representan el número de versión de Podman.

Una vez que hayas descargado el instalador en tu sistema Windows, simplemente haz doble clic en el instalador y se instalará automáticamente. Se puede modificar la ruta en la que se quiere instalar.

Es importante ejecutar Podman en una ventana de comando utilizando las aplicaciones del Símbolo del Sistema de Windows (cmd.exe) o PowerShell (pwsh.exe).

Para verificar la instalación, ejecutar el siguiente comando:

podman info

Instalar Podman en Linux

Para instalar Podman en Linux, tendrá que tener en cuenta la versión de Linux que tenga.

Arch Linux y Manjaro Linux

sudo pacman -S podman

Consulta las instrucciones adicionales para el modo rootless si es necesario en la wiki de ArchLinux.

Alpine Linux

sudo apk add podman

Consulta la wiki de Alpine Linux para más detalles sobre Podman.

CentOS

Podman está disponible por defecto en los repositorios Extras (CentOS 7) y en el repositorio AppStream (CentOS 8).

sudo yum -y install podman

Debian

Podman está disponible a partir de la versión Debian 11 (Bullseye).

sudo apt-get -y install podman

Ubuntu

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

Para versiones más recientes, considera el repo Kubic.

Fedora

sudo dnf -y install podman

openSUSE

sudo zypper install podman

Raspberry Pi OS arm64 (beta)

Raspberry Pi OS utiliza repositorios estándar de Debian por lo que es compatible con los repositorios arm64 de Debian. Sigue los pasos de Debian para instalar Podman en Raspberry Pi OS.


Ejemplos de uso

A continuación veremos algunos ejemplos de cómo utilizar Podman en diferentes situaciones.

Despliegue de aplicaciones web

Podman es ideal para el despliegue de aplicaciones web, permitiendo a los desarrolladores crear entornos aislados y portátiles para el desarrollo y producción de sus aplicaciones.

Ejemplo de cómo desplegar un contenedor web:

podman run -d -p 8080:80 nginx

Este comando inicia un contenedor Nginx en segundo plano (-d), mapeando el puerto 80 del contenedor al puerto 8080 del host (-p 8080:80).

Gestión de microservicios

Podman facilita la gestión de microservicios al permitir la ejecución de múltiples contenedores de manera eficiente.

Supongamos que deseamos ejecutar un servicio backend en Python y un servicio de base de datos en PostgreSQL:

podman run -d --name backend python-app
podman run -d --name db -e POSTGRES_PASSWORD=mysecretpassword postgres:latest

Aquí, iniciamos contenedores independientes para el backend y la base de datos, proporcionando un entorno aislado y fácil de gestionar.

Desarrollo y pruebas

Los desarrolladores pueden aprovechar Podman para crear entornos de desarrollo y pruebas reproducibles, mejorando la consistencia en todo el ciclo de vida del software.

Supongamos que estamos desarrollando una aplicación en Node.js:

podman run -it --rm -v $(pwd):/app -w /app node:14 npm install

Este comando ejecuta un contenedor Node.js, montando el directorio actual dentro del contenedor y ejecutando el comando npm install. Una vez completado, el contenedor se elimina (--rm), asegurando un entorno limpio.

Integración con herramientas de orquestación

Podman se integra fácilmente con orquestadores como Kubernetes, facilitando la gestión de contenedores en entornos de escala empresarial.

El siguiente ejemplo muestra cómo se pueden utilizar archivos YAML de Kubernetes para gestionar pods y contenedores.

Supongamos que queremos ejecutar un pod con dos contenedores, uno para una aplicación frontend y otro para una base de datos:

Creamos un archivo pod.yaml con la configuración del pod:

# pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: frontend
    image: my-frontend-image:latest
  - name: database
    image: postgres:latest
    env:
      - name: POSTGRES_PASSWORD
        value: mysecretpassword

Y para ejecutar el pod, ejecutamos el siguiente comando:

podman play kube pod.yaml

Ejecución de contenedores de sistema

Podman también puede ejecutar contenedores de sistema completos, lo que resulta útil para probar o utilizar diferentes distribuciones Linux.

Por ejemplo, para ejecutar un contenedor de Ubuntu:

podman run -it --rm ubuntu:latest

Este comando inicia un contenedor interactivo de Ubuntu, permitiéndote explorar y realizar pruebas en un entorno Ubuntu aislado.


Referencias


Conclusiones

Podman ofrece una alternativa atractiva para la contenerización en entornos basados en Linux. Su enfoque sin daemon, integración con herramientas de sistema y compatibilidad con Docker lo convierten en una opción valiosa para desarrolladores y administradores de sistemas que buscan flexibilidad y seguridad en la gestión de contenedores.


Salir de la versión móvil