Podman 관리 · 6 min read · Feb 11, 2026

Podman 시작하기: 이미지, 컨테이너 및 볼륨 관리

Podman은 Docker와 유사한 기능을 제공하는 컨테이너 런타임입니다. libpod 라이브러리의 일부로, 포드, 컨테이너, 컨테이너 이미지 및 컨테이너 볼륨을 관리하는 데 사용할 수 있습니다. Podman은 클라이언트-서버 아키텍처를 사용하는 Docker와 매우 다르며, 실행을 위해 docker 데몬이 필요하지 않으며 루트 권한 없이도 원활하게 실행할 수 있습니다.

이 튜토리얼에서는 컨테이너, 이미지 및 볼륨 관리를 위한 Podman의 기본 사용법과 컨테이너 이미지를 만드는 방법을 보여줍니다. 이 가이드를 완료하려면 podman이 설치되어 있어야 합니다. 다양한 운영 체제에 대한 가이드는 다음과 같습니다:

  • Ubuntu 22.04에 Podman 설치하는 방법
  • Rocky Linux에서 Podman 시작하기 (Docker 대안)
  • Ubuntu 20.04에서 Podman 설치 및 사용하기 (Docker 대안)
  • Debian 11에서 Docker 대안으로 Podman 설치하기

전제 조건

  • Podman이 설치된 Ubuntu 서버
  • Docker에 대한 기본 지식이 있으면 더 쉽게 진행할 수 있습니다.

1. 기본 Podman 명령어

Ubuntu 시스템에 Podman을 설치한 후, Podman 자체를 확인하는 방법을 알아야 합니다. 시스템에 이미 설치된 버전, Podman 시스템 환경 및 기본 도움말 사용법을 확인해야 합니다.

기계에 설치된 Podman 버전을 얻으려면 다음 명령어를 사용하십시오.

podman version

이 가이드를 위해 Podman 버전 > 1.0.1이면 괜찮습니다.

이제 Podman 환경 설정을 확인하십시오.

podman info

그러면 Podman 설치의 시스템 환경이 표시됩니다. 호스트 패키지 정보, 레지스트리 및 저장소를 포함합니다.

Podman 환경

다음으로, 사용 가능한 모든 Podman 명령 옵션을 표시하려면 다음 명령어를 실행하십시오.

podman --help

특정 명령에 대한 도움말을 표시하려면 아래와 같이 사용할 수 있습니다.

podman pod help

Podman 도움말

2. Podman을 사용한 컨테이너 이미지 관리

이제 Podman을 사용한 컨테이너 이미지 관리로 넘어갑니다. 이미지 검색, 이미지 다운로드, 로컬 시스템에서 사용 가능한 이미지 표시 및 이미지 제거와 관련된 몇 가지 기본 명령어를 알아야 합니다.

이미지를 검색하려면 아래 명령어를 실행하십시오.

podman search nginx

이 명령어는 ‘/etc/containers/repositories.conf’ 구성 파일에 이미 정의된 모든 사용 가능한 리포지토리에서 ‘nginx’라는 단어가 포함된 이미지를 검색합니다.

Podman 이미지 검색

이제 아래의 ‘podman pull’ 명령어를 사용하여 이미지를 다운로드하십시오.

podman pull docker.io/library/nginx  
podman pull docker.io/library/alpine

완료되면 서버 머신에서 사용 가능한 모든 이미지를 확인하십시오.

podman images

이제 시스템에서 nginx 및 alpine 이미지를 얻을 수 있습니다.

podman pull 명령어로 이미지 가져오기

alpine 이미지를 제거하려면 아래와 같이 ‘rmi’ 옵션을 사용할 수 있습니다.

podman rmi alpine

Podman 이미지 제거

결과적으로 시스템에는 nginx 컨테이너 이미지만 남게 됩니다.

3. 컨테이너 관리

이 단계에서는 컨테이너 이미지 관리에 대해 배웠습니다. 다음 단계에서는 Podman을 사용하여 컨테이너를 생성하고 관리하는 방법을 배웁니다.

새로운 컨테이너를 생성하려면 아래와 같이 ‘podman run’ 명령어를 사용할 수 있습니다.

podman run -d -p 8000:80 --name hakase-nginx docker.io/library/nginx

이 명령어는 nginx 이미지를 기반으로 ‘hakase-nginx’라는 이름의 새로운 컨테이너를 생성하고 호스트 머신의 포트 8000을 노출합니다.

세부 명령어 옵션:

-d - 컨테이너를 백그라운드에서 실행하고 결과로 컨테이너 ID만 인쇄합니다.
-p 8000:80 - 컨테이너와 호스트 시스템의 포트 매핑. 호스트 머신의 포트 8000과 컨테이너의 포트 80.
–name hakase-nginx - ‘hakase-nginx’로 컨테이너 이름을 지정합니다.

이제 시스템에서 실행 중인 모든 컨테이너를 표시하십시오.

podman ps

그러면 ‘hakase-nginx’라는 컨테이너가 실행 중임을 보여줍니다.

모든 사용 가능한 컨테이너를 확인하려면 ‘-a’ 옵션을 사용할 수 있습니다.

podman ps -a

이제 다양한 상태의 모든 사용 가능한 컨테이너를 얻을 수 있습니다.

호스트 머신에서 모든 실행 중인 컨테이너를 얻은 후, 컨테이너 내부의 모든 프로세스를 확인하고, 실행 중인 컨테이너에 연결하고, 컨테이너를 중지하고 제거하는 방법을 보여줍니다.

실행 중인 컨테이너 내부의 프로세스를 확인하려면 다음 명령어를 사용하십시오.

podman top hakase-nginx

이제 실행 중인 컨테이너에 연결하고 접근하려면 아래와 같이 ‘exec’ 명령어를 사용할 수 있습니다.

podman exec -it hakase-nginx /bin/bash

‘hakase-nginx’ 컨테이너 내부에서 nginx 버전을 확인하십시오.

nginx -V

아래와 같은 결과를 얻을 수 있습니다.

Podman 컨테이너 관리

이제 ‘exit’를 입력하여 컨테이너에서 로그아웃하십시오.

다음으로 ‘hakase-nginx’ 컨테이너를 중지하십시오.

podman stop hakase-nginx

그런 다음 컨테이너를 제거하십시오.

podman rm hakase-nginx

Podman 시작 및 중지

실행 중인 컨테이너를 강제로 중지하고 제거하려면 ‘-f’ 옵션을 사용할 수 있습니다.

podman rm hakase-nginx -f

4. 볼륨 관리

Podman은 0.12 버전부터 로컬 전용 볼륨을 생성하고 관리하는 기능을 지원합니다. 따라서 이전 버전을 사용하고 있다면 ‘podman volume’ 명령어를 사용할 수 없습니다.

이제 다음 명령어를 사용하여 새로운 로컬 볼륨을 생성하십시오.

podman volume create hakase-volume

그 후, 시스템에서 사용 가능한 모든 볼륨을 표시하십시오.

podman volume ls

그러면 목록에서 ‘hakase-volume’을 얻을 수 있습니다.

‘hakase-volume’ 볼륨에 대한 세부 정보를 확인하려면 아래와 같이 ‘inspect’ 옵션을 사용할 수 있습니다.

podman volume inspect hakase-volume

그리고 볼륨의 ‘mountPoint’가 로컬 디렉토리 ‘/var/lib/containers/storage/hakase-volume/_data’로 설정되어 있음을 확인할 수 있습니다.

Podman 볼륨 관리

해당 디렉토리로 이동하여 새로운 index.html 파일을 생성하십시오.

cd /var/lib/containers/storage/hakase-volume/_data  
echo "

This is custom index and volume - Hello Podman

" > index.html

이제 새로운 컨테이너를 생성하고 ‘hakase-volume’을 컨테이너에 마운트하십시오.

podman run -d -p 8000:80 -v hakase-volume:/usr/share/nginx/html --name hakase-nginx docker.io/library/nginx

컨테이너가 생성되면 다음 명령어를 사용하여 컨테이너에서 사용 가능한 볼륨을 확인하십시오.

podman inspect -f '{{ json .Mounts }}' hakase-nginx | jq

결과의 하단에서 컨테이너에서 ‘hakase-volume’을 확인할 수 있습니다.

볼륨 마운트

다음으로, 컨테이너의 IP 주소를 확인하십시오.

podman inspect -f '{{ .NetworkSettings.IPAddress }}' hakase-nginx

httpie를 사용하여 HTTP 포트에서 컨테이너에 접근하십시오.

http http://10.88.0.4/

그러면 ‘hakase-volume’에 생성된 사용자 정의 index.html 파일을 얻을 수 있습니다.

컨테이너 볼륨 접근

이제 볼륨을 제거하려면 ‘rm’ 옵션을 사용할 수 있습니다.

podman volume rm hakase-volume

그리고 ‘hakase-volume’이 제거됩니다.

5. 커밋으로 사용자 정의 이미지 생성

이제 Podman을 사용하여 사용자 정의 컨테이너 이미지를 생성할 것입니다. 기본적으로 Podman은 변경된 컨테이너를 기반으로 사용자 정의 이미지를 생성하거나 ‘Dockerfile’을 사용하여 새로운 사용자 정의 이미지를 생성할 수 있습니다.

이 섹션에서는 ‘podman commit’ 명령어를 통해 변경된 컨테이너를 기반으로 새로운 사용자 정의 이미지를 생성할 것입니다.

마스터 이미지 ‘ubuntu’를 다운로드/풀합니다.

podman pull docker.io/library/ubuntu

이제 ubuntu 이미지를 기반으로 컨테이너를 실행합니다. 그리고 컨테이너 내부에서 ‘bash’ 명령어를 실행하여 리포지토리를 업데이트하고 nginx 패키지를 설치합니다.

podman run --name container-temp ubuntu bash -c "apt update && apt install -y nginx"

컨테이너 내부에서 nginx 설치가 완료될 때까지 기다립니다.

커밋을 사용하여 사용자 정의 이미지 생성

완료되면 다음 명령어를 사용하여 ‘container-temp’를 기반으로 새로운 사용자 정의 이미지를 생성합니다.

podman commit container-temp my-nginx

다음으로 시스템에서 사용 가능한 이미지를 확인하십시오.

podman images

그리고 목록에서 ‘my-nginx’라는 새로운 이미지를 얻을 수 있습니다.

사용자 정의 이미지 생성

‘my-nginx’ 이미지를 기반으로 컨테이너를 실행하려면 다음 명령어를 실행하십시오.

podman run -dt -p 8001:80 --name nginx01 my-nginx /usr/sbin/nginx -g 'daemon off;'

이제 실행 중인 컨테이너를 확인하고 IP 주소를 확인하십시오.

podman ps  
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx01

그러면 ‘nginx01’ 컨테이너가 실행 중임을 보여줍니다. 그 후, ‘nginx01’ 컨테이너의 HTTP 포트에 접근하십시오.

http -p h 10.88.0.19

결과적으로 아래와 같은 HTTP 헤더 응답을 얻을 수 있습니다.

nginx 테스트

6. Dockerfile로 사용자 정의 이미지 생성

이제 Dockerfile을 사용하여 새로운 사용자 정의 컨테이너 이미지를 생성할 것입니다.

새로운 프로젝트 디렉토리를 만들고 그 안에 새로운 ‘Dockerfile’을 생성하십시오.

mkdir project; cd project/  
vim Dockerfile

다음 구성을 붙여넣습니다.

FROM ubuntu  
  
# Nginx 설치  
RUN \  
  apt-get update && \  
  apt-get install -y nginx && \  
  rm -rf /var/lib/apt/lists/* && \  
  echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \  
chown -R www-data:www-data /var/lib/nginx  
  
# 마운트 가능한 디렉토리 정의.  
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]  
  
# 작업 디렉토리 정의.  
WORKDIR /etc/nginx  
  
# 기본 명령 정의.  
CMD ["nginx"]  
  
# 포트 노출.  
EXPOSE 80  
EXPOSE 443

저장하고 닫습니다.

이제 아래의 podman 명령어를 실행하여 Dockerfile을 사용하여 새로운 사용자 정의 이미지를 빌드하십시오.

podman build -t hakase-image .

Dockerfiles를 사용하여 이미지 생성

완료되면 머신에서 새로운 이미지를 확인하십시오.

podman images

그리고 ‘hakase-image’를 얻을 수 있습니다.

Podman 이미지 목록

다음으로, 아래 명령어를 실행하여 ‘hakase-image’를 기반으로 새로운 컨테이너를 생성하십시오.

podman run -d -p 8002:80 --name nginx02 hakase-image

그 후, ‘nginx02’ 컨테이너와 그 IP 주소를 확인하십시오.

podman ps  
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx02

‘nginx02’ 컨테이너가 실행 중인지 확인하십시오.

이제 httpie 도구를 사용하여 컨테이너를 확인하십시오.

http 10.88.0.21

그러면 기본 Nginx 페이지와 그 HTTP 헤더가 표시됩니다.

테스트 이미지 접근

마지막으로, 이제 Podman을 사용하여 컨테이너, 이미지 및 볼륨을 관리할 수 있으며, Dockerfile을 사용하여 애플리케이션을 위한 새로운 사용자 정의 이미지를 생성할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.