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.