Ich versuche, gitea
Podman 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 --new
Rootless-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 uid
und gid
Container 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.7
openSUSE Leap 15.3.
Wie kann ich diesen Container ausführen und gleichzeitig alle verwendeten uid
s und gid
s einem bestimmten Hostbenutzer/einer bestimmten Hostgruppe zuordnen?
Antwort1
Die Hauptursache scheint der Versuch gewesen zu sein, mehrere Container uid
( und gid
) einem einzigen uid
/ gid
auf 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.