본문으로 바로가기

[리눅스] podman 이란?

category 운영체제/리눅스 2025. 4. 4. 22:57
반응형

오늘은 podman에 대해 포스팅 해보겠습니다. podman은 다들 아시고 있는 docker와 비슷합니다.

Podman이란?

Podman은 컨테이너 관리 도구로, Docker와 비슷한 명령어 구조와 기능을 가지고 있지만, 몇 가지 중요한 차별점이 있습니다. Docker의 대안으로 많이 언급되며, 특히 **rootless(루트 권한 없이)**로 작동할 수 있다는 점에서 보안적인 장점이 있습니다. 또한, Podman은 데몬리스(daemonless) 방식으로 작동하기 때문에 Docker와는 달리 데몬(백그라운드 프로세스)을 실행할 필요가 없습니다.

 

Podman과 Docker의 차이점

Podman과 Docker는 기본적으로 컨테이너 이미지를 빌드하고, 실행하고, 관리하는 데 사용되지만, 두 도구 간에는 몇 가지 주요 차이점이 있습니다.

 

1. 데몬리스: Podman은 데몬 없이 실행되며, 이는 Podman이 직접 명령어를 실행하는 구조로, Docker에서 사용하는 데몬 방식(Docker Daemon)이 필요하지 않습니다.

 

2. Rootless 실행: Podman은 사용자 권한으로 실행될 수 있어 루트 권한 없이 컨테이너를 관리할 수 있습니다. 이는 보안상 큰 장점이 됩니다. Docker는 기본적으로 루트 권한이 필요합니다.

 

3. 명령어 호환성: Podman은 Docker와 명령어 호환이 매우 뛰어나기 때문에, Docker 명령어를 Podman으로 쉽게 대체할 수 있습니다. 예를 들어, docker run은 podman run으로 대체할 수 있습니다.

 

4. 컨테이너와 Pod 개념: Podman은 "Pod" 개념을 도입하여 여러 개의 컨테이너를 묶어 하나의 유닛처럼 관리할 수 있습니다. 이는 Kubernetes에서 사용되는 개념과 유사합니다.

 

Podman의 특징

1. Rootless Operation

Podman은 rootless로 실행될 수 있어, 컨테이너가 시스템의 루트 권한 없이 실행됩니다. 이는 보안 강화에 매우 중요한 요소입니다. 컨테이너를 루트 권한 없이 실행하면, 컨테이너에서 발생할 수 있는 보안 취약점이 시스템의 나머지 부분에 영향을 미칠 위험을 줄일 수 있습니다.

2. Daemonless Architecture

Docker는 항상 백그라운드에서 실행되는 Docker Daemon을 필요로 하지만, Podman은 데몬이 없으며, 명령어를 실행할 때마다 Podman 프로세스가 실행됩니다. 이로 인해 Podman은 사용자가 직접 명령어를 실행할 때만 동작하며, 불필요한 시스템 리소스를 소모하지 않습니다.

3. Kubernetes와의 호환성

Podman은 Kubernetes에서 사용하는 YAML 파일 형식을 지원하며, 이를 통해 쉽게 컨테이너와 애플리케이션을 Kubernetes로 마이그레이션할 수 있습니다. Podman은 또한 Kubernetes에서 사용하는 Pod 개념을 지원하여 여러 컨테이너를 하나의 Pod 내에서 실행할 수 있습니다.

4. Docker와 명령어 호환

Podman은 Docker와의 명령어 호환성을 제공합니다. 이는 기존 Docker 사용자들이 Podman을 쉽게 전환할 수 있도록 돕습니다. 예를 들어, Docker의 docker run 명령은 Podman에서는 podman run으로 바꾸면 동일한 방식으로 동작합니다.

5. 컨테이너 이미지 관리

Podman은 podman build, podman pull, podman push와 같은 명령어를 사용하여 컨테이너 이미지를 관리합니다. Docker와 비슷한 방식으로 이미지를 다운로드하고, 빌드하고, 푸시할 수 있습니다.

6. 컨테이너와 이미지 관리

Podman은 컨테이너와 이미지를 관리하는 다양한 도구를 제공합니다. 예를 들어, podman ps로 현재 실행 중인 컨테이너를 확인할 수 있고, podman images로 로컬에 저장된 컨테이너 이미지를 확인할 수 있습니다.

 

Podman 설치

 

Podman은 여러 리눅스 배포판에 기본적으로 포함되어 있거나, 쉽게 설치할 수 있습니다. RHEL 에서는 다음과 같은 명령어로 설치할 수 있습니다:

 

]# dnf install podman

 
 

명령어 사용법

1. 컨테이너 실행: Docker에서 docker run을 사용하듯이, Podman에서는 podman run을 사용합니다.

]# podman run -it --rm alpin

 

2. 이미지 빌드: Docker에서 docker build 명령을 사용할 때처럼, Podman에서는 podman build를 사용하여 Dockerfile을 기반으로 이미지를 빌드할 수 있습니다.

]# podman build -t myimage

 
 
3. 컨테이너 목록 보기: 현재 실행 중인 컨테이너를 확인하려면 podman ps 명령을 사용합니다.

]# podman ps

 
4. 이미지 목록 보기: 로컬에 저장된 이미지를 확인하려면 podman images 명령을 사용합니다.

]# podman images

 

Podman 사용의 장점

Podman은 특히 보안과 관련된 장점이 두드러집니다. 루트 권한 없이 컨테이너를 실행할 수 있고, 데몬리스 방식으로 작동하여 시스템 리소스를 절약할 수 있습니다. 또한 Docker와 명령어 호환성이 뛰어나 기존 Docker 사용자가 전환하기 용이합니다.

Podman과 Kubernetes

Podman은 Kubernetes와 긴밀하게 통합될 수 있습니다. Podman은 Pod 개념을 도입하여 여러 컨테이너를 하나의 단위로 묶어 관리할 수 있으며, 이는 Kubernetes에서 사용하는 Pod와 유사합니다. 또한, Podman을 사용하여 Kubernetes 클러스터에서 실행할 수 있는 컨테이너 이미지를 쉽게 만들고 배포할 수 있습니다.

 

 

Podman은 지속적으로 발전하고 있으며, Docker를 대체하는 컨테이너 관리 도구로서의 가능성이 커지고 있습니다. 특히 보안, 성능, Kubernetes와의 호환성에서 장점을 가지고 있어, 클라우드 네이티브 애플리케이션과 DevOps 환경에서 인기를 얻고 있습니다.

반응형