podman: Container-Benutzer dem Host-Benutzer zuordnen, um Berechtigungen für gemeinsam genutzte Volumes zu erhalten

podman: Container-Benutzer dem Host-Benutzer zuordnen, um Berechtigungen für gemeinsam genutzte Volumes zu erhalten

Ich versuche, giteaPodman einzurichten. Ich hätte gerne

  • das Datenvolumen einem Host-Verzeichnis zugeordnet, da ich so die Daten einfach überprüfen und sichern kann
  • der Containerprozess, der von einem bestimmten Hostbenutzer ausgeführt wird

Podman wird vom Root-Benutzer ausgeführt, hauptsächlich wegen der Probleme, die ich mit podman generate systemd --newRootless-Containern hatte (siehesystemd User=-Direktive wird nicht unterstützt, warum?Undunterstützt User= in systemd zum Ausführen von Root-Diensten).

Um das Mapping mit Rootfull-Containern zu erreichen, begann ich, alle verwendeten Container uidund gidContainer auf die des Hosts zu mappen gitea user. Das Ergebnis war ungefähr wie folgt:

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

Die Ausgabe, die ich erhalte, ist

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

Ich habe trotz der Pfadwarnungen andere Podman-Container erfolgreich ausgeführt, daher denke ich, dass sie ignoriert werden können.

Ich verwende podman version 3.4.7openSUSE Leap 15.3.

Wie kann ich diesen Container ausführen und gleichzeitig alle verwendeten uids und gids einem bestimmten Hostbenutzer/einer bestimmten Hostgruppe zuordnen?

Antwort1

Die Hauptursache scheint der Versuch gewesen zu sein, mehrere Container uid( und gid) einem einzigen uid/ gidauf dem Host zuzuordnen. Ich habe also versucht, ( Container auf Host ) zuzuordnen:

  • UID 0 → gite
  • GID 0 → gite
  • UID 1000 → Gite
  • GID 1000 → Gite
  • GID 42 → Gite

Stattdessen greife ich jetzt auf eine andere Zuordnung zurück, bei der nur das 1000 UID/GID-Paar, das die Gitea-App tatsächlich ausführt, dem Host-Benutzer zugeordnet wird und die anderen Benutzer einen anderen UID-Bereich erhalten, indem

    --uidmap=0:10000:999 \
    --gidmap=0:10000:999 \
    --uidmap=1000:$(id -u gitea):1 \
    --gidmap=1000:$(id -g gitea):1 \

Das bedeutet, dass wir die folgenden Zuordnungen haben

  • UIDs 0–999 → 10000–10999
  • GIDs 0–999 → 10000–10999
  • UID 1000 → Gite
  • GID 1000 → Gite

Mit dieser Änderung wird der Container erfolgreich gestartet und die Berechtigungen auf dem Host sind wie erwartet.

verwandte Informationen