Podman을 사용하여 설정하려고합니다 gitea
. 나는 갖고 싶다
- 데이터 볼륨을 호스트 디렉터리에 매핑하면 데이터를 쉽게 검사하고 백업할 수 있기 때문입니다.
- 특정 호스트 사용자가 실행하는 컨테이너 프로세스
podman generate systemd --new
Podman은 루트 사용자에 의해 실행되는데, 주로 루트 없는 컨테이너와 관련된 문제로 인해 발생합니다 ( 참조).systemd User= 지시문이 지원되지 않습니다. 이유는 무엇입니까?그리고루트 없는 서비스 실행을 위해 systemd에서 User= 지원).
루트풀 컨테이너로 매핑을 달성하기 위해 사용 중인 모든 컨테이너를 uid
호스트 gid
의 gitea user
. 나는 다음과 같은 것으로 끝났습니다.
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
내가 얻는 결과는 다음과 같습니다.
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
경로 경고에도 불구하고 다른 Podman 컨테이너를 성공적으로 실행했으므로 무시해도 된다고 생각합니다.
저는 podman version 3.4.7
openSUSE Leap 15.3을 실행 중입니다.
사용 중인 모든 항목 uid
을 gid
특정 호스트 사용자/그룹에 매핑하면서 이 컨테이너를 어떻게 실행할 수 있나요?
답변1
uid
근본 원인은 여러 컨테이너 (및 gid
s)를 단일 uid
/ gid
호스트에 매핑하려고 시도한 것 같습니다 . 그래서 (컨테이너를 호스트로) 매핑하려고 했습니다.
- UID 0 → 지테아
- GID 0 → 지테아
- UID 1000 → 기테아
- GID 1000 → 기테아
- GID 42 → 기테아
대신 실제로 Gitea 앱을 실행하는 1000 UID/GID 쌍만 호스트 사용자에게 매핑되고 다른 사용자는 다음을 사용하여 다른 UID 범위를 받는 다른 매핑으로 되돌아가는 것을 알고 있습니다.
--uidmap=0:10000:999 \
--gidmap=0:10000:999 \
--uidmap=1000:$(id -u gitea):1 \
--gidmap=1000:$(id -g gitea):1 \
이는 다음과 같은 매핑이 있음을 의미합니다.
- UID 0-999 → 10000-10999
- GID 0-999 → 10000-10999
- UID 1000 → 기테아
- GID 1000 → 기테아
이 변경으로 인해 컨테이너가 성공적으로 시작되고 호스트에 대한 권한이 예상대로 됩니다.