podman: asigna el usuario del contenedor al usuario anfitrión para obtener permisos de volumen compartido

podman: asigna el usuario del contenedor al usuario anfitrión para obtener permisos de volumen compartido

Estoy intentando configurar giteausando 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 --newlos contenedores sin raíz (consultesystemd User= directiva no compatible, ¿por qué?ysoporte Usuario = en systemd para ejecutar servicios sin raíz).

uidPara lograr el mapeo con contenedores rootfull, comenzamos a mapear todos los contenedores en uso gidal 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.7openSUSE Leap 15.3.

¿Cómo puedo ejecutar este contenedor, mientras asigno todos los uidmensajes de correo electrónico en uso gida un usuario/grupo de host específico?

Respuesta1

La causa principal parece haber sido intentar asignar varios contenedores uid(y gids) a un solo uid/ gidal 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.

información relacionada