Podman

Podman es una herramienta para la administración de contenedores en sistemas basados en Linux. Permite gestionar contenedores que aíslan software y dependencias para ejecutar aplicaciones en cualquier entorno. Es compatible con el estándar OCI (Open Container Initiative), lo que facilita su uso junto a Docker o Kubernetes.

Componentes principales

Podman CLI

La interfaz de línea de comandos permite crear, ejecutar, detener, eliminar y gestionar contenedores y pods. Un pod es un grupo de contenedores que comparten recursos y pueden gestionarse en conjunto.

Comandos útiles:

  • podman run: Crea y ejecuta un contenedor a partir de una imagen.

  • podman ps: Muestra información sobre los contenedores en ejecución.

  • podman stop: Detiene un contenedor activo.

  • podman rm: Elimina un contenedor detenido.

Podman service

Este servicio en segundo plano maneja los contenedores y pods, comunincándose con la CLI a través de una API REST. Puede accederse desde otras máquinas usando SSH.

Ejemplos:

  • podman system service --time=0: Inicia el servicio sin límite de tiempo.

  • podman-remote -H ssh://usuario@host run ...: Ejecuta contenedores de forma remota.

Podman engine

Es el motor que crea y ejecuta los contenedores y pods usando tecnologías como cgroups v2 y rootless, mejorando seguridad y eficiencia.

Analogía de funcionamiento

  • Contenedores: Platos en un restaurante

  • Pods: Mesas del restaurante

  • Imágenes: Recetas para los platos

  • Podman CLI: Camarero

  • Podman service: Gerente

  • Podman engine: Chef

Características clave

  • Sin demonio centralizado, lo que simplifica la administración.

  • Compatibilidad con Docker para facilitar la transición.

  • Permite ejecutar contenedores sin privilegios de administrador.

  • Gestión de "pods" para facilitar la comunicación entre contenedores.

  • Integración con herramientas como Kubernetes.

Ventajas principales

Podman es ideal para trabajar con contenedores en Linux sin depender de un daemon centralizado. Destaca por su enfoque en simplicidad y seguridad.

Ejemplo: WordPress y MariaDB con Podman

docker-compose.yaml de referencia

version: '3'
services:
  mariadb:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpresspassword
    volumes:
      - ~/wordpress-pod-data/mysql:/var/lib/mysql
  wordpress:
    image: wordpress
    environment:
      WORDPRESS_DB_HOST: mariadb
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpresspassword
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ~/wordpress-pod-data/wp:/var/www/html
    ports:
      - "8080:80"

Comandos equivalentes en Podman

mkdir ~/wordpress-pod-data

podman pod create --name wordpress-pod -p 8080:80

podman run -d --pod wordpress-pod --name mariadb-container \
  -v ~/wordpress-pod-data/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=mysecretpassword \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wordpress \
  -e MYSQL_PASSWORD=wordpresspassword mariadb

podman run -d --pod wordpress-pod --name wordpress-container \
  -v ~/wordpress-pod-data/wp:/var/www/html \
  -e WORDPRESS_DB_HOST=mariadb \
  -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpresspassword \
  -e WORDPRESS_DB_NAME=wordpress wordpress

Estos comandos crean un pod llamado wordpress-pod y ejecutan los contenedores mariadb-container y wordpress-container dentro del mismo pod. Los contenedores comparten la misma red, facilitando su comunicación. Puedes acceder a WordPress en tu navegador desde http://localhost:8080.

Nota: Ajusta contraseñas y datos sensibles según sea necesario para producción.