Guía de Creación de Imágenes Base para Contenedores Rootless
- Fecha:
2026-03-09
- Autor:
Infraestructura raulvilchez.org
- Sistema Operativo:
Rocky Linux 10 (Host & Guest)
- Usuario de Gestión:
raul-ipa
Propósito
Este documento describe el procedimiento estandarizado para generar una imagen base de contenedor aprovechando repositorios locales (ISO) y su importación al motor de contenedores Podman en modo rootless, optimizado para almacenamiento VDO.
Prerrequisitos
1. Repositorio Local
La imagen ISO debe estar montada y el archivo de repositorio configurado. En Rocky 10 Minimal, la ruta de metadatos consolidada es crucial.
Punto de montaje:
/mnt/rocky-minArchivo Repo:
/etc/yum.repos.d/local-min.repoConfiguración Clave:
[min-rocky] name=Rocky Linux 10 Minimal - Local baseurl=file:///mnt/rocky-min/Minimal enabled=1 gpgcheck=1
2. Privilegios Rootless (raul-ipa)
El usuario de sistema debe tener rangos de IDs asignados para el mapeo de namespaces.
Archivos:
/etc/subuidy/etc/subgidEntrada:
raul-ipa:100000:65536
Procedimiento de Generación
Paso 1: Instalación del RootFS (Como Root en la IV)
Se utiliza el comando dnf para volcar un sistema operativo mínimo en un directorio temporal del hipervisor y el directorio de imágenes para asegurar la persistencia y evitar errores de ejecución (OCI permission denied).
# Crear directorio en la zona de fuentes de la IV
mkdir -p /var/lib/virt_storage/sources/rocky10-rootfs
# Instalar paquetes base directamente en la infraestructura
dnf install
--installroot /var/lib/virt_storage/sources/rocky10-rootfs --releasever=10 \
bash coreutils dnf iputils vim-minimal --nodocs -y
Paso 2: Preparación del Entorno Rootless
Antes de importar, es necesario asegurar que el usuario de infraestructura tenga persistencia y reconozca los nuevos rangos de ID.
loginctl enable-linger raul-ipa
Cambiamos al usuario normal; en este caso el usuario de red raul-ipa:
podman system migrate
Paso 3: Importación a Podman (Modo Rootless IdM)
En entornos con usuarios de red (IdM), el rootfs original puede contener metadatos de usuario (UID/GID) que exceden los rangos permitidos en /etc/subuid (ej. IDs superiores a 165535). Para evitar errores de ejecución como Permission denied o fallos de importación como invalid argument al realizar el lchown, es obligatorio normalizar la identidad del flujo de datos a nivel de bit antes de que entre al motor de Podman.
Se utiliza una tubería (pipe) que redefine al propietario como el usuario 0 (root virtual) para asegurar la compatibilidad con el mapeo de namespaces del usuario raul-ipa.
La adición de –owner=0 –group=0 es obligatoria en entornos con usuarios de red (IdM) para evitar errores de mapeo de UIDs inexistentes durante la descompresión de la capa.
# 1. Asegurar que estamos en el directorio raíz del rootfs
cd /var/lib/virt_storage/sources/rocky10-rootfs
# 2. Generar el tar normalizando propietarios y eliminando metadatos extendidos
# --owner=0 --group=0: Mapea todo al root interno del contenedor.
# --no-xattrs --no-selinux: Limpia atributos que bloquean la ejecución en VDO.
tar --owner=0 --group=0 --no-xattrs --no-selinux -c . | podman import - rocky10-base
Note
Tras la importación, se recomienda ejecutar podman system migrate para asegurar que la base de datos de imágenes local esté sincronizada con los rangos de IDs del host.
Nota Técnica:
Paso 3: Importación a Podman (Como raul-ipa)
Para evitar conflictos de permisos con archivos sensibles (como /etc/shadow), la importación se realiza mediante un túnel desde la sesión de root hacia el almacenamiento del usuario de administración.
cd /var/lib/virt_storage/sources/rocky10-rootfs
tar --no-xattrs --no-selinux -c . | sudo -u raul-ipa podman import - rocky10-base
Verificación
Una vez finalizado, el usuario raul-ipa debe confirmar la disponibilidad de la imagen en su entorno de trabajo (activado mediante la función vwork).
raul-ipa > podman images
# Resultado esperado: localhost/rocky10-base latest
Notas de Mantenimiento
Limpieza: Tras la importación exitosa, ejecutar
rm -rf /tmp/rocky10-rootfs.Deduplicación: Al usar esta imagen como base (FROM) en futuros Containerfiles, el almacenamiento VDO solo escribirá los deltas, ahorrando espacio en el NVMe.