Podman: Básicos y Creando un Contenedor con Systemd en CentOS Stream 10
¡Heytale! ¿Quieres saber sobre Podman?
Podman es un motor de contenedores sin daemon para desarrollar, gestionar y ejecutar contenedores OCI en Linux. ¡A diferencia de Docker, no necesita un daemon corriendo, lo que lo hace más seguro y eficiente! Es compatible con imágenes Docker y se integra con Kubernetes para despliegues en la nube.
Nota
Podman se ejecuta sin root de forma predeterminada, mejorando la seguridad en comparación con Docker.
Advertencia
Mientras que Podman soporta contenedores sin root, algunas características avanzadas como la integración con systemd pueden requerir acceso root en el contenedor.
Características Chingonas
- Sin daemonio:
- Ejecuta contenedores directo desde tu usuario, sin servicios en segundo plano.
- Rootless:
- Corre contenedores sin root, ¡más seguridad!
- Compatibilidad con docker:
- Comandos similares, fácil migrar.
- Integración con k8s:
- Genera YAMLs para clústeres.
- Gestión de imágenes y contenedores:
- Construye, inspecciona y maneja imágenes OCI.
- Soporte para systemd:
- Ejecuta contenedores con systemd para servicios persistentes.
Ejemplo: contenedor con Systemd
¡Vamos a crear un contenedor de CentOS Stream 10 con systemd habilitado y PostgreSQL instalado! Asegúrate de tener Podman instalado.
# podman con systemd
## iniciar contenedor
podman run -di --name cs10-systemd centos:stream10
## instalar systemd y postgresql
podman exec cs10-systemd dnf -y install systemd postgresql-server sudo
## limpiar
podman exec cs10-systemd dnf clean all
## commitear a imagen
podman commit -s cs10-systemd cs10-systemd
## borrar contenedor
podman rm -f cs10-systemd
## correr con systemd
podman run -dt -p 127.0.0.1:5432:5432 --name=cs10-systemd localhost/cs10-systemd /usr/sbin/init
## configurar postgresql
podman exec cs10-systemd postgresql-setup --initdb
## habilitar e iniciar postgresql
podman exec cs10-systemd systemctl enable --now postgresql
## crear usuario y db
podman exec cs10-systemd sudo -u postgres createuser -dRS --no-replication renich
podman exec cs10-systemd sudo -u postgres createdb renich
podman exec cs10-systemd sudo -u postgres psql -c "ALTER USER renich WITH PASSWORD 'MySuperPass';"
## crear pg_hba.conf
cat << EOF > pg_hba.conf
local all all peer
host all renich 127.0.0.1/32 scram-sha-256
host all renich ::1/128 scram-sha-256
EOF
podman cp pg_hba.conf cs10-systemd:/var/lib/pgsql/data/pg_hba.conf
rm -f pg_hba.conf
## verificar
podman exec cs10-systemd systemctl restart postgresql
podman exec cs10-systemd systemctl status postgresql
PGPASSWORD='MySuperPass' psql -h 127.0.0.1 -l
# limpieza
podman rm -f cs10-systemd
podman rmi cs10-systemd
Consejo
Siempre limpia los contenedores e imágenes después de probar para ahorrar espacio en disco.
¡Este ejemplo muestra cómo podman facilita contenedores avanzados con systemd y PostgreSQL, perfecto para desarrollo y producción!