소개

Podman 소개

Podman은 컨테이너를 관리하기 위한 오픈 소스 도구로, Red Hat에서 개발. Docker와 유사한 기능을 제공하지만, 몇 가지 중요한 차별점이 있다. Podman은 주로 리눅스 환경에서 사용되며, 컨테이너를 생성, 실행, 관리하는 데 필요한 다양한 기능을 제공한다.

주요 특징

  • 루트리스 실행: Podman은 루트 권한 없이 컨테이너를 실행할 수 있어 보안성이 높다. 이는 시스템의 보안을 강화하는 데 큰 도움이 된다.

  • 경량화: Podman은 경량 컨테이너를 지원하여 시스템 자원을 효율적으로 사용할 수 있다. 이는 특히 리소스가 제한된 환경에서 유리하다.

  • Docker 호환성: Podman은 Docker CLI와 유사한 명령어를 사용하여 쉽게 전환할 수 있다. 기존 Docker 사용자들이 쉽게 적응할 수 있도록 설계되었다.

  • Pod 개념: Podman은 여러 컨테이너를 그룹화하여 관리할 수 있는 “Pod” 개념을 도입하였다. 이는 Kubernetes와의 통합을 용이하게 한다.

  • 시스템 통합: Podman은 시스템의 다른 서비스와 통합이 용이하여, 다양한 환경에서 유연하게 사용할 수 있다.

사용 사례

Podman은 개발, 테스트, 배포 등 다양한 환경에서 사용될 수 있다. 특히 보안이 중요한 환경이나 리소스가 제한된 시스템에서 유용하게 활용될 수 있다.

Podman은 컨테이너 관리의 새로운 대안으로 자리 잡고 있으며, 특히 보안과 경량화를 중시하는 사용자들에게 많은 관심을 받고 있다.

설치

윈도우즈 WSL 기반 Alpine Linux 설치 및 Podman 설치를 정리한다.

Alpine Install

  • download alpine miniroot image
  • PowerShell에서
> wsl --install --name Alpine322 --from-file alpine-minirootfs-3.22.0-x86_64.tar.gz

WSL Shell Procedure

  • 기본 패키지 및 기타 환경 설정
# apk add --no-cache tzdata doas git openssl openssh openrc git
# ...
# exit

WSL Restart

> wsl --shutdown
> wsl -d Alpine322

Podman

  • Setup - 아래 <USER>는 설치시 등록된 일반사용자 이름
# apk add podman
# rc-update add cgroups
# rc-service cgroups start
# modprobe tun
# echo tun >> /etc/modules
# echo <USER>:100000:65536 >/etc/subuid
# echo <USER>:100000:65536 >/etc/subgid
  • Run Test
$ podman run --rm hello-world

Podman 컨테이너 실행시 마운트 에러

  • Podman 사용시 rootless 컨테이너 실행시 발생
  • WARN[0000] "/" is not a shared mount, this could cause issues or missing mounts with rootless containers
  • local start script 작성
$ doas vi /etc/local.d/mount-rshared.start
$ doas chmod +x /etc/local.d/mount-rshared.start
  • /etc/local.d/mount-rshared.start
#!/bin/sh
mount --make-rshared /
  • Openrc 등록
doas rc-update add local default
doas rc-service local start
  • wsl 재시작
> wsl --shutdown

REFERENCE