Saltar al contenido principal

Podman

Instalación

Arch Linux

sudo pacman -Syu podman podman-compose
sudo pacman -Syu podman-desktop

Editar el archivo /etc/containers/registries.conf para habilitar la descarga de imágenes desde docker.io

/etc/containers/registries.conf
unqualified-search-registries = ["docker.io"]

Construcción y Despliegue

Con Docker Compose (múltiples servicios)

# Construir imágenes
podman-compose build

# Levantar servicios en segundo plano
podman-compose up -d

# Levantar servicios (modo interactivo)
podman-compose up

# Reconstruir y levantar servicios
podman-compose up --build

Con Dockerfile individual (imagen única)

# Construir imagen desde Dockerfile
podman build -t nombre-imagen:tag .

# Ejecutar contenedor desde la imagen
podman run -d --name nombre-contenedor \
-p 8080:80 \
-v $(pwd)/data:/app/data \
-e ENV_VAR=valor \
nombre-imagen:tag

# Ejecutar con reinicio automático
podman run -d --name nombre-contenedor \
--restart=always \
-p 8080:80 \
nombre-imagen:tag

Gestión de Servicios

Con Docker Compose

# Ver contenedores en ejecución
podman ps

# Ver todos los contenedores (incluidos detenidos)
podman ps -a

# Reiniciar un servicio específico
podman-compose restart service-name

# Detener todos los servicios
podman-compose down

# Detener y eliminar volúmenes
podman-compose down -v

Con contenedores individuales

# Iniciar contenedor detenido
podman start nombre-contenedor

# Detener contenedor
podman stop nombre-contenedor

# Reiniciar contenedor
podman restart nombre-contenedor

# Eliminar contenedor
podman rm nombre-contenedor

# Eliminar contenedor forzosamente
podman rm -f nombre-contenedor

# Inspeccionar contenedor
podman inspect nombre-contenedor

Logs y Monitoreo

# Ver logs en tiempo real (compose)
podman-compose logs -f

# Ver logs de un servicio específico (compose)
podman-compose logs -f service-name

# Ver logs de contenedor individual
podman logs -f nombre-contenedor

# Ver últimas N líneas de logs
podman logs --tail 100 nombre-contenedor

# Ver logs con marcas de tiempo
podman logs -t nombre-contenedor

Acceso a Contenedores

# Acceder a la terminal del contenedor web
podman exec -it service-web bash

# Acceder a contenedor individual
podman exec -it nombre-contenedor bash

# Ejecutar comando sin entrar al contenedor
podman exec nombre-contenedor ls -la /app

# Acceder a MySQL
podman exec -it service-db mysql -u<user> -p<password>

# Acceder como usuario específico
podman exec -it -u root nombre-contenedor bash

Base de Datos

# Importar base de datos
podman exec -i container_name mysql -u<user> -p<password> db-name < data.sql

# Exportar base de datos
podman exec container_name mysqldump -u<user> -p<password> db-name > backup.sql

Gestión de Imágenes

# Listar imágenes
podman images

# Listar imágenes con detalles
podman images --digests

# Eliminar imagen específica
podman rmi nombre-imagen:tag

# Eliminar imagen forzosamente
podman rmi -f nombre-imagen:tag

Limpieza y Mantenimiento

# Limpiar imágenes no utilizadas
podman image prune -a

# Eliminar contenedores detenidos
podman container prune

# Eliminar volúmenes no utilizados
podman volume prune

# Limpieza completa (contenedores, imágenes, volúmenes, redes)
podman system prune -a --volumes

# Limpieza completa sin confirmación
podman system prune -a --volumes -f

# Ver uso de espacio
podman system df

Volúmenes y Persistencia

# Listar volúmenes
podman volume ls

# Crear volumen
podman volume create nombre-volumen

# Inspeccionar volumen
podman volume inspect nombre-volumen

# Eliminar volumen
podman volume rm nombre-volumen

# Ejecutar con volumen nombrado
podman run -d -v nombre-volumen:/app/data nombre-imagen:tag

# Copiar archivos desde/hacia contenedor
podman cp archivo.txt nombre-contenedor:/path/destino
podman cp nombre-contenedor:/path/origen/archivo.txt ./

Tips Útiles

# Ver uso de recursos en tiempo real
podman stats

# Ver uso de recursos de contenedor específico
podman stats nombre-contenedor

# Limitar recursos al ejecutar
podman run -d --memory="512m" --cpus="1.0" nombre-imagen:tag

# Ver eventos en tiempo real
podman events

# Pausar/Despausar contenedor
podman pause nombre-contenedor
podman unpause nombre-contenedor