LabHub

Rootless Podman 운영 · rootless podman 설치와 초기 설정 · 실습

rootless podman 초기 설정

LabHub 에서 이어서 보기

목표

전용 사용자 podster 를 위한 rootless podman 환경을 처음부터 구성하고, podman info 로 검증합니다.

왜 중요한가

rootless podman 은 설치보다 설정이 본론입니다. /etc/subuid 대역이 없으면 단일 UID 모드로 조용히 폴백해 특정 이미지에서만 권한 오류가 나고, 그 원인을 찾는 데 며칠이 걸립니다. graphroot 를 확인하지 않으면 홈 파티션이 차서 서비스가 멈춥니다. unqualified-search-registries 를 안 넣으면 docker 에서 잘 돌던 스크립트가 podman 에서 이미지를 못 찾습니다.

이 실습의 체크리스트는 실무에서 새 서버에 rootless podman 을 세울 때 그대로 쓰는 순서입니다.

단계

1. /root/pod 디렉터리를 만들고, 사용자 podsteruid gid 홈경로 를 공백으로 구분해 한 줄로 /root/pod/user.txt 에 적으세요.
2. /etc/subuidpodster 에게 시작 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-registriesdocker.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 의 스토리지 드라이버 이름>

참고

단계 8개

  1. 대상 사용자 확인
  2. subuid 대역 배정
  3. subgid 대역 배정
  4. 매핑 계산
  5. storage.conf 작성
  6. registries.conf 작성
  7. podman info 로 검증
  8. 초기 설정 체크리스트