Podman이란?

URL 복사

Podman(POD 관리자)은 컨테이너를 개발, 관리, 실행하기 위한 오픈소스 툴입니다. Red Hat® 엔지니어가 오픈소스 커뮤니티와 함께 개발한 Podman은 libpod 라이브러리를 사용하여 컨테이너 에코시스템 전체를 관리합니다. 

Podman의 아키텍처는 데몬이 없고 포괄적이므로 컨테이너 관리에 있어서 접근성과 보안을 동시에 갖춘 옵션입니다. 또한 Podman에는 Buildah, Skopeo와 같은 툴과 기능이 포함되어 있어 개발자가 컨테이너 환경을 자신의 필요에 맞게 사용자 정의할 수 있습니다. 아울러 개발자는 로컬 환경에서 Podman을 사용하기 위한 그래픽 사용자 인터페이스(GUI)인 Podman Desktop을 활용할 수 있습니다.

사용자는 Red Hat Enterprise Linux, Fedora, CentOS, Ubuntu와 같은 다양한 Linux® 배포판에서 Podman을 실행할 수 있습니다. 

Red Hat Enterprise Linux 체험
 

포드는 모두 함께 실행되며 동일한 리소스를 공유하는 컨테이너 그룹으로, 쿠버네티스 포드와 유사합니다. Podman은 컨테이너, 포드, 컨테이너 이미지 및 볼륨을 관리하기 위한 애플리케이션 프로그래밍 인터페이스(API)를 제공하는 libpod 라이브러리와 간단한 커맨드라인 인터페이스(CLI)를 통해 이러한 포드를 관리합니다. Podman의 CLI는 컨테이너 런타임과 형식을 위한 업계 표준을 준수하도록 설계된 Open Container Initiative(OCI) 컨테이너를 생성하고 지원합니다. 관련 프로젝트인 Buildah에서는 더 고급화된 빌드 기능들을 제공합니다.

각 포드는 하나의 인프라 컨테이너와 다수의 일반 컨테이너로 구성되어 있습니다. 인프라 컨테이너는 포드를 실행하고 사용자 네임스페이스를 유지 관리하여 컨테이너를 호스트로부터 분리합니다 다른 일반 컨테이너는 자체 프로세스를 추적하고 종료된 컨테이너, 즉 리소스 일부가 여전히 사용되기 때문에 환경에서 제거할 수 없으며 작동하지 않는 컨테이너를 찾는 모니터를 각각 갖추고 있습니다.

Red Hat 리소스

Podman은 데몬이 없다는 점에서 다른 컨테이너 엔진과 차별화됩니다. 데몬이 없다는 것은 컨테이너를 실행하는 데 있어서 루트 권한이 있는 프로세스에 의존하지 않는다는 뜻입니다.

데몬은 사용자 인터페이스 없이 컨테이너를 실행하는 작업을 수행하기 위해 시스템 백그라운드에서 실행되는 프로세스입니다. 사용자와 컨테이너 사이에서 통신을 중계한다고 생각하면 됩니다.

데몬은 컨테이너 환경을 관리하는 하나의 편리한 방법이기도 하지만 동시에 보안 취약점을 가져올 수도 있습니다. 다수의 데몬이 루트 권한을 통해 실행됩니다. Linux 시스템에서 루트 계정은 관리자 액세스 권한이 있는(동시에 관리자 검증 절차를 건너뛰는) 슈퍼 사용자(superuser) 역할을 하면서 파일을 읽고, 프로그램을 설치하고, 애플리케이션을 수정합니다. 따라서 데몬은 컨테이너를 장악하고 호스트 시스템에 잠입하려는 해커들에게 매우 좋은 표적이 될 수 있습니다.

Podman은 데몬을 제거하고 일반 사용자가 루트를 보유한 데몬과 상호 작용할 필요 없이 컨테이너를 실행하거나 루트리스(rootless) 컨테이너의 사용을 허용합니다. 루트리스 컨테이너로 사용자는 프로세스에 관리 권한이 없어도 컨테이너를 생성, 실행, 관리할 수 있어, 더 손쉽게 액세스할 수 있는 컨테이너 환경을 만드는 동시에 보안 리스크를 줄일 수 있습니다. 또한 Podman은  Security-Enhanced Linux(SELinux) 레이블이 있는 각 컨테이너를 실행하여 관리자가 컨테이너 프로세스에 제공되는 리소스와 기능을 제어할 수 있도록 권한을 부여합니다.

사용자는 커맨드라인에서 Podman을 호출하여 리포지토리에서 컨테이너를 가져와 실행할 수 있습니다. Podman은 구성된 컨테이너 런타임을 호출해 실행 중인 컨테이너를 생성합니다. 그러나 전용 데몬 없이도 Podman은 Linux 운영 체제를 위한 시스템 및 서비스 관리자인 systemd를 사용하여 업데이트하고 백그라운드에서 컨테이너를 지속적으로 실행할 수 있습니다. systemd와 Podman을 통합하여 컨테이너를 위한 제어 유닛을 생성하고 자동 지원되는 systemd로 컨테이너를 실행할 수 있습니다.

사용자는 시스템에 있는 사용자 리포지토리 또는 systemd 유닛을 사용하여 컨테이너의 자동 시작과 관리를 제어할 수 있습니다. 사용자가 자신의 리소스를 관리하고 루트리스(rootless) 컨테이너를 실행하면 쓰기 권한 같은 권한을 그러한 권한이 있어서는 안 되는 시스템의 영역에 추가하려고 해도 할 수 없습니다. 이렇게 하면 모든 사용자가 별도의 컨테이너와 이미지 세트를 보유하게 되어 서로 방해하지 않고 동일한 호스트에서 Podman을 동시에 사용할 수도 있습니다. 사용자가 작업을 마치면 공통 레지스트리로 변경 사항을 푸시하여 다른 사람과 이미지를 공유할 수 있습니다.

또한 Podman은 컨테이너를 관리하기 위해 RESTful API(REST API)를 배포합니다. REST는 Representational State Transfer의 줄임말입니다. REST API는 REST 아키텍처 스타일의 제약 조건을 준수하고 RESTful 웹 서비스와의 상호작용을 허용하는 API입니다. REST API를 통해 cURL, Postman, Google의 Advanced REST Client 및 그 외 다양한 플랫폼에서 Podman을 호출할 수 있습니다.

5가지 Podman 기능 지금 사용해 보기

Podman Desktop은 Podman을 위한 GUI로, 개발자가 노트북 또는 워크스테이션에서 곧바로 컨테이너로 작업할 수 있는 중앙 위치를 제공합니다. 개발자는 로컬 Linux, Windows, macOS 환경 전반에서 일관된 GUI를 사용하여 이미지를 구축, 푸시, 풀하고 Podman 리소스를 직접 관리할 수 있습니다. Podman Desktop을 사용하는 개발자는 즉시 배포 가능한 컨테이너화된 애플리케이션을 쿠버네티스 환경에 제공할 수 있습니다.

Podman Desktop은 추가 기능을 제공하는 확장 팩을 지원합니다. 일례로 Podman AI Lab은 로컬 환경에서 대규모 언어 모델(LLM)을 사용하는 애플리케이션을 빌드하는 데 필요한 레시피를 추가하고 엄선된 오픈소스 라이센스 LLM 카탈로그를 포함합니다. 또 다른 예로는 Podman Desktop을 위한 Red Hat 확장 팩이 있습니다. 개발자가 Red Hat OpenShift®와 같은 특정 Red Hat 기술을 사용하는 데 도움이 됩니다.

Podman은 모듈식 컨테이너 엔진으로, 컨테이너를 구축하고 이동하려면 Buildah 및 Skopeo와 같은 툴을 함께 사용해야 합니다. Buildah를 사용하면 처음부터 또는 이미지를 시작점으로 사용하여 컨테이너를 구축할 수 있습니다. Skopeo는 다양한 스토리지 시스템 간에 컨테이너 이미지를 이동하므로 사용자가 docker.io, quay.io, 내부 레지스트리와 같은 레지스트리 간 또는 로컬 시스템에 있는 다양한 유형의 스토리지 간에 이미지를 복사할 수 있습니다. 컨테이너화에 대한 이러한 모듈식 접근 방식을 사용하면 간접비를 줄이고 필요한 기능을 분리하여 유연한 경량화 환경을 구축할 수 있습니다. 컨테이너로 작업하면 하나의 목표에 집중할 수 있고 필요할 때마다 수시로 업데이트가 가능한 소규모의 모듈식 툴을 사용할 수 있습니다.

Podman, Buildah, Skopeo를 전문 스위스 군용 나이프 세트라고 생각해 보세요. 다 함께 사용할 때 거의 모든 컨테이너 활용 사례를 충족할 수 있습니다. 그 중에서도 Podman은 가장 큰 나이프에 해당합니다.

Podman과 Buildah는 컨테이너를 시작하기 위해 기본적으로 OCI 런타임인 runC를 사용합니다. 따라서 runC를 사용하여 이미지를 구축하고 실행하거나 Docker 형식의 이미지를 실행할 수 있습니다. 이 Go 언어 기반의 툴은 런타임 사양을 읽고 Linux 커널을 구성하여, 컨테이너 프로세스를 생성하고 시작합니다. 일부 구성을 변경해 Podman을 crun과 같은 기타 설치 공간과 함께 사용할 수도 있습니다.

Buildah와 Podman으로 GitHub Actions에 UBI 컨테이너 구축

DockerLinux 컨테이너를 만들고 사용할 수 있도록 지원하는 컨테이너화 기술입니다. Podman과 Docker의 주요한 차이점은 바로 Podman이 데몬이 없는 아키텍처를 보유하고 있다는 점입니다. Podman 컨테이너는 항상 루트리스였으나 Docker는 최근 들어서야 데몬 구성에 루트리스 모드를 추가했습니다. Docker는 컨테이너 생성 및 관리를 위한 올인원 툴인 반면, Podman과 Buildah 및 Skopeo 등의 관련 툴은 컨테이너화의 특정 측면에 더욱 전문화되었습니다. 따라서 사용자는 필요한 툴만 가지고 환경을 사용자 정의할 수 있습니다.

Podman은 Docker의 대안이 되는 강력한 컨테이너 엔진이지만 이 두 엔진은 함께 사용할 수 있습니다. 사용자는 Podman에 대해 Docker의 별칭을 설정(alias docker=podman)하거나 그 반대로 설정하여 간편하게 Podman과 Docker를 전환하여 사용할 수 있습니다. 또한 podman-docker라고 하는 rpm이 시스템 애플리케이션 경로에 'docker'를 제공하면 'docker' 명령이 필요한 환경을 위해 Podman을 호출할 수 있고, Docker로부터의 이전이 용이해집니다. Podman의 CLI는 Docker의 CLI와 유사하기 때문에 어느 한쪽에 익숙한 사용자는 다른 한쪽도 성공적으로 사용할 가능성이 높습니다.

일부 개발자는 개발 단계에서 Docker를 사용하고 실행(runtime) 환경에서 프로그램을 Podman으로 이전해 Podman과 Docker를 모두 사용합니다.

Podman은 쿠버네티스나 Red Hat OpenShift Container Platform을 사용하지 않고 컨테이너를 실행하는 개발자에게 최적화되어 있습니다. 쿠버네티스 컨테이너 오케스트레이션의 경우 개발자는 커뮤니티 기반의 오픈소스 컨테이너 엔진인 CRI-O를 사용할 수 있습니다.

Podman을 활용한 루트리스 컨테이너에 관한 동영상 확인하기

Podman은 주요 컨테이너 엔진과 동일한 고성능 기능을 제공함으로써 컨테이너 환경에 변화를 가져왔으며, 많은 개발 팀이 바라는 유연성, 접근성, 보안 기능까지 갖추고 있습니다. Podman은 다음을 지원합니다.

  • 컨테이너의 실행, 네트워크 연결, 체크포인트 설정, 제거를 비롯한 전체 컨테이너 라이프사이클과 컨테이너 이미지를 관리합니다.
  • 루트리스 컨테이너와 포드를 위한 리소스를 실행하고 분리합니다.
  • OCI, Docker 이미지를 비롯하여 Docker와 호환 가능한 CLI를 지원합니다.
  • 데몬이 없는 환경을 조성하여 보안을 강화하고 유휴 리소스 사용을 줄입니다. 
  • REST API를 배포하여 Podman의 고급 기능을 지원합니다.
  • 유저스페이스의 체크포인트/복원(CRIU) 툴로 Linux 컨테이너에 체크포인트/복원 기능을 구현합니다. CRIU는 실행 중인 컨테이너를 중지하고 메모리 콘텐츠 및 상태를 디스크에 저장하여 컨테이너화된 워크로드를 더 빠르게 재시작할 수 있습니다.
  • 컨테이너를 자동으로 업데이트합니다. Podman은 업데이트된 컨테이너가 시작되지 않고 최종 작업 버전으로 자동 롤백하는 경우 이를 감지합니다. 따라서 애플리케이션 신뢰성을 한 차원 높은 수준으로 끌어올립니다. 

튜토리얼 시나리오에서 Podman 사용해보기

Podman에는 Red Hat Enterprise Linux 서브스크립션이 포함되어 있으므로 신뢰할 수 있고, 지원 가능하며, 안정적인 Universal Base Image(UBI)를 사용하여 구축된 OCI 호환 컨테이너를 실행할 수 있습니다. Red Hat Enterprise Linux는 엔터프라이즈 환경에서 Linux 컨테이너를 실행하기 위한 표준으로, 개발자가 손쉽게 컨테이너를 가동하고 배포를 관리하며 새로운 애플리케이션의 개발 속도를 앞당길 수 있습니다. Red Hat Enterprise Linux 인프라를 업그레이드하면 이러한 장점을 모두 활용할 수 있습니다. 오픈 하이브리드 클라우드 환경 전반에서 Red Hat Enterprise Linux에 구축된 이식 가능한 애플리케이션과 컨테이너를 활용함으로써 조직은 진화하는 목표에 맞춰 민첩성을 유지하고 지속적으로 혁신할 수 있습니다.

Red Hat Enterprise Linux 웹 콘솔은 사용이 간편한 웹 인터페이스를 통해 시스템의 배포 및 일상적인 관리를 간소화합니다. Podman은 웹 콘솔의 구성 요소로 사용할 수 있으며, 컨테이너와 이미지를 관리할 수 있도록 지원합니다. 웹 콘솔의 대시보드에서 컨테이너 호스트에 액세스하고 시스템 부하를 모니터링하여 컨테이너가 CPU와 메모리를 얼마나 사용하는지 모니터링할 수 있습니다. 또한 웹 콘솔을 사용하면 일반적인 태스크는 물론 복잡한 운영까지도 간소화할 수 있어 컨테이너 관리가 더욱 간소화됩니다.

Ansible Playbook을 사용하는 Red Hat Ansible® Automation Platform은 설치, 컨테이너 배포 및 시간과 리소스를 자주 사용하는 기타 태스크와 같은 Podman 기능을 자동화합니다.

Podman, Podman Desktop과 그 밖의 오픈 표준 기반 컨테이너 툴을 통해 Red Hat Enterprise Linux는 더욱 강력한 컨테이너 호스트가 되어 프로덕션급 지원, 안정성, 보안 기능을 제공하고 쿠버네티스 및 Red Hat OpenShift를 지원합니다.

Universal Base Image ebook 다운로드

허브

레드햇 공식 블로그

레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.

모든 Red Hat 제품 체험판

무료 제품 체험판을 통해 핸즈온 경험을 얻고, 자격증 시험에 대비하거나 해당 제품이 조직에 적합한지 평가할 수 있습니다.

추가 자료

Podman Desktop이란?

Podman Desktop은 로컬 개발자 환경에서 컨테이너 작업을 간소화하는 무료 오픈소스 툴입니다.

Ansible과 Puppet 비교: 선택 시 알아야 할 주요 사항 및 차이점

Ansible과 Puppet은 커뮤니티 오픈소스 IT 자동화 툴입니다. 이 문서에서는 두 툴의 유사점과 차이점을 자세히 설명하고, 선택 시 고려해야 할 주요 요소들을 안내합니다.

앤서블과 테라폼 비교: 기능과 장단점 상세 설명

Ansible은 에이전트 없이 구성 관리 및 자동화를 단순화하고, Terraform은 인프라를 코드로 관리하고 배포하는 데 중점을 두며, 모두 오픈소스 자동화 제품입니다.

오픈소스 리소스

관련 기사