Estoy intentando configurar gitea
usando podman. me gustaría tener
- el volumen de datos asignado a un directorio de host, porque me permite inspeccionar y hacer copias de seguridad de los datos fácilmente
- el proceso contenedor ejecutado por un usuario host específico
Podman lo ejecuta el usuario root, principalmente debido a los problemas que tuve con podman generate systemd --new
los contenedores sin raíz (consultesystemd User= directiva no compatible, ¿por qué?ysoporte Usuario = en systemd para ejecutar servicios sin raíz).
uid
Para lograr el mapeo con contenedores rootfull, comenzamos a mapear todos los contenedores en uso gid
al host gitea user
. Terminé con algo como
podman run --rm \
--uidmap=0:$(id -u gitea):1 \
--gidmap=0:$(id -g gitea):1 \
--uidmap=1000:$(id -u gitea):1 \
--gidmap=1000:$(id -g gitea):1 \
--gidmap=42:$(id -g gitea):1 \
--volume /srv/gitea/data:/var/lib/gitea \
docker.io/gitea/gitea:1.18.0-rc1-rootless
El resultado que obtengo es
WARN[0000] Path "/etc/SUSEConnect" from "/etc/containers/mounts.conf" doesn't exist, skipping
WARN[0000] Path "/etc/zypp/credentials.d/SCCcredentials" from "/etc/containers/mounts.conf" doesn't exist, skipping
Error: OCI runtime error: runc create failed: unable to start container process: can't get final child's PID from pipe: EOF
Ejecuté con éxito otros contenedores Podman a pesar de las advertencias de ruta, por lo que creo que se pueden ignorar.
Estoy ejecutando podman version 3.4.7
openSUSE Leap 15.3.
¿Cómo puedo ejecutar este contenedor, mientras asigno todos los uid
mensajes de correo electrónico en uso gid
a un usuario/grupo de host específico?
Respuesta1
La causa principal parece haber sido intentar asignar varios contenedores uid
(y gid
s) a un solo uid
/ gid
al host. Entonces estaba intentando mapear (contenedor a host):
- UID 0 → gitea
- GID 0 → gitea
- UID 1000 → gitea
- GID 1000 → gitea
- GID 42 → gitea
En lugar de eso, estoy recurriendo a un mapeo diferente, donde solo el par 1000 UID/GID, el que realmente ejecuta la aplicación Gitea, se asigna al usuario host, y otros reciben un rango UID diferente usando
--uidmap=0:10000:999 \
--gidmap=0:10000:999 \
--uidmap=1000:$(id -u gitea):1 \
--gidmap=1000:$(id -g gitea):1 \
Esto significa que tenemos las siguientes asignaciones
- UID 0-999 → 10000-10999
- GID 0-999 → 10000-10999
- UID 1000 → gitea
- GID 1000 → gitea
Con este cambio, el contenedor se inicia correctamente y los permisos en el host son los esperados.