Rootless Podman 운영 · rootless podman 설치와 초기 설정 · 실습
rootless podman 초기 설정
목표
전용 사용자 podster 를 위한 rootless podman 환경을 처음부터 구성하고, podman info 로 검증합니다.
왜 중요한가
rootless podman 은 설치보다 설정이 본론입니다. /etc/subuid 대역이 없으면 단일 UID 모드로 조용히 폴백해 특정 이미지에서만 권한 오류가 나고, 그 원인을 찾는 데 며칠이 걸립니다. graphroot 를 확인하지 않으면 홈 파티션이 차서 서비스가 멈춥니다. unqualified-search-registries 를 안 넣으면 docker 에서 잘 돌던 스크립트가 podman 에서 이미지를 못 찾습니다.
이 실습의 체크리스트는 실무에서 새 서버에 rootless podman 을 세울 때 그대로 쓰는 순서입니다.
단계
1. /root/pod 디렉터리를 만들고, 사용자 podster 의 uid gid 홈경로 를 공백으로 구분해 한 줄로 /root/pod/user.txt 에 적으세요.
2. /etc/subuid 에 podster 에게 시작 100000, 개수 65536 대역을 배정하세요.
3. /etc/subgid 에도 같은 대역을 배정하세요.
4. /root/pod/mapping.txt 를 다음 3줄로 만드세요.CONTAINER_0=<컨테이너 안 UID 0 에 대응하는 호스트 UID> / CONTAINER_1=<컨테이너 안 UID 1 의 호스트 UID> / CONTAINER_1000=<컨테이너 안 UID 1000 의 호스트 UID>
5. /home/podster/.config/containers/storage.conf 를 만드세요. [storage] 섹션에 driver, runroot, graphroot 세 키가 있어야 하고, graphroot 는 /home/podster/.local/share/containers/storage 여야 합니다. 파일 소유자는 podster 여야 합니다.
6. /home/podster/.config/containers/registries.conf 를 만드세요. unqualified-search-registries 에 docker.io 가 포함돼야 하고, docker.io 를 사내 미러 mirror.labhub.local/dockerhub 로 보내는 [[registry]] 블록이 있어야 합니다. 파일 소유자는 podster 여야 합니다.
7. podster 권한으로 podman info 를 실행해 결과를 /root/pod/info.json 으로 저장하세요. JSON 형식이어야 하고 graphRoot 값이 5번에서 지정한 경로여야 합니다.
8. /root/pod/checklist.txt 를 다음 5줄로 만드세요.SUBUID=yes / SUBGID=yes / ROOTLESS=<info 의 rootless 값 true/false> / GRAPHROOT=<info 의 graphRoot 값> / DRIVER=<info 의 스토리지 드라이버 이름>
참고
- subuid 배정은
usermod --add-subuids 100000-165535 podster또는/etc/subuid에 한 줄 추가로 합니다. - 사용자 권한 실행은
su - podster -c 'podman info --format json'형태입니다. - JSON 파싱에는
jq를 쓸 수 있습니다. 예:jq -r '.store.graphRoot' /root/pod/info.json - 설정 디렉터리를 만든 뒤
chown -R podster:podster /home/podster/.config를 잊지 마세요. - 흔한 실수 1: 4번에서 컨테이너 UID 1 을 100001 로 계산하는 경우. 대역의 첫 값이 UID 1 에 대응합니다.
- 흔한 실수 2: 설정 파일을 root 소유로 만들어 podster 가 못 읽는 경우.
단계 8개
- 대상 사용자 확인
- subuid 대역 배정
- subgid 대역 배정
- 매핑 계산
- storage.conf 작성
- registries.conf 작성
- podman info 로 검증
- 초기 설정 체크리스트