본문 바로가기
Infra2026년 5월 15일5분 읽기

Podman 5 Rootless 프로덕션 — Docker Desktop 대체 6개월 후

YS
김영삼
조회 1210
Podman 5 Rootless 프로덕션 — Docker Desktop 대체 6개월 후

핵심 요약

Podman 5는 데몬 없이 rootless로 동작하는 OCI 컨테이너 엔진. Docker Desktop 라이선스 회피, quadlet으로 systemd 네이티브 운영, compose 95% 호환이 강점. 6개월간 18대 서버 + 24명 개발자 환경에서 운영한 결과 보안 사고 0건, 빌드 속도 동등, 단 user namespace UID/GID 매핑·rootless 네트워크 한계 같은 함정 5개를 만났다.

1. Rootless가 왜 중요한가

  • 탈취 시 피해 격리: 컨테이너 escape도 root 권한 아님
  • 데몬 없음: dockerd 단일 장애점 제거
  • 사용자별 격리: 같은 서버에서 사용자마다 독립 컨테이너 네임스페이스
  • 라이선스: Apache 2.0, Docker Desktop 비즈니스 라이선스 회피

2. 6개월 운영 환경

지표
프로덕션 서버18대 (RHEL 9, Ubuntu 24.04)
개발자 워크스테이션24대 (macOS 12, Linux 12)
컨테이너 평균 동시284개
주간 빌드약 4200건
보안 사고0
Docker Desktop 라이선스 절감$5,520/년 (24석 × $230)

3. Docker 호환 — alias 한 줄

# ~/.bashrc 또는 zshrc
alias docker=podman

# 시스템 전반에 호환 소켓
systemctl --user enable --now podman.socket
export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock

# 이제 docker-compose, testcontainers, devcontainers 다 동작

4. Quadlet — systemd 네이티브 컨테이너

Podman 5의 가장 큰 운영 가치. 컨테이너를 systemd unit처럼 다룬다.

# /etc/containers/systemd/web.container
[Unit]
Description=Web App
After=network-online.target

[Container]
Image=registry.example.com/web:1.4.2
PublishPort=8080:8080
Environment=DATABASE_URL=postgres://db/app
Volume=/var/log/web:/var/log/web:Z
HealthCmd=curl -f http://localhost:8080/health
HealthInterval=30s

[Service]
Restart=always

[Install]
WantedBy=multi-user.target

5. 성능 — Docker vs Podman

작업Docker 26Podman 5차이
Node 이미지 빌드48s46s-4%
컨테이너 시작 (Alpine)340ms410ms+20%
50개 동시 컨테이너 시작9.4s8.6s-9%
HTTP 요청 처리 (nginx)동등동등~0%

6. 함정 5개

  1. UID/GID 매핑: rootless에서 컨테이너 root=호스트 1000, 컨테이너 1000=호스트 100999. 볼륨 마운트 시 권한 꼬임. :U 옵션 또는 podman unshare chown 필요
  2. 네트워크 ping: rootless는 기본 ICMP 금지. sysctl net.ipv4.ping_group_range
  3. 1024 미만 포트: rootless로 80 바인딩 불가. sysctl net.ipv4.ip_unprivileged_port_start=80
  4. SELinux: 볼륨 마운트에 :Z 안 붙이면 즉시 권한 거부
  5. cgroups v1 호환: 일부 오래된 시스템에서 메모리 제한 무시

7. macOS — Podman Machine

brew install podman
podman machine init --cpus 4 --memory 8192 --disk-size 100
podman machine start

# Apple Silicon에서 amd64 이미지
podman run --arch amd64 alpine uname -m  # x86_64

# Rosetta 가속 (Sonoma 이상)
podman machine init --rosetta=true

8. 도입 결정

상황추천
Docker Desktop 유료 라이선스 부담Podman 즉시
RHEL/Fedora 환경Podman 네이티브
Docker Swarm 사용Podman은 swarm 미지원, 유지

참고

  • podman.io
  • docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록