Podman 가이드 · 7 min read · Oct 05, 2025

AlmaLinux 9에서 Podman 설치 및 사용을 위한 초보자 가이드

Podman은 Open Container Initiative (OCI) 컨테이너 및 컨테이너 이미지를 사용하여 애플리케이션을 배포하기 위한 리눅스 네이티브 도구입니다. Docker 이미지 및 OCI 컨테이너 이미지를 포함한 여러 컨테이너 이미지 형식을 지원합니다. 또한 Podman은 팟과 컨테이너 그룹 관리를 지원합니다.

Podman은 데몬이 없는 도구로, 서비스 없이 단일 바이너리 명령줄로 실행됩니다. Docker와 유사한 명령줄을 제공하며, ‘alias docker=podman’과 같은 별칭을 사용할 수 있습니다.

이 가이드에서는 AlmaLinux 9 서버에서 Docker Engine의 대체로 Podman을 설치하고 사용하는 방법을 보여줍니다. 컨테이너 애플리케이션 관리를 위한 Podman의 기본 사용법을 배우게 됩니다. 이 가이드를 완료하면 로컬 개발을 위한 컨테이너 오케스트레이션으로 Podman을 사용하는 데 더 나은 이해를 갖게 될 것입니다.

필수 조건

이 가이드를 시작하려면 다음이 필요합니다:

  • AlmaLinux 9 서버 - 이 예제는 호스트 이름이 ‘AlmaLinux9‘인 서버를 사용합니다.
  • sudo/root 관리자 권한이 있는 비루트 사용자.

Podman 설치

Podman은 데몬이 없는 오픈 소스 컨테이너 오케스트레이션으로, 빠른 개발을 위해 설계되었습니다. Podman은 리눅스 네이티브 애플리케이션이며 Docker와 유사한 명령줄 인터페이스를 제공합니다.

Podman을 사용하면 OCI (Open Containers Initiative) 컨테이너 및 컨테이너 이미지를 사용하여 애플리케이션을 찾고, 실행하고, 공유하고 배포할 수 있습니다.

AlmaLinux에서는 Podman이 기본적으로 AppStream 리포지토리에 제공되며, DNF 패키지 관리자를 사용하여 설치할 수 있습니다.

다음 dnf 명령을 실행하여 AlmaLinux 서버에 Podman을 설치합니다.

sudo dnf install podman

프롬프트가 표시되면 y를 입력한 후 ENTER를 누릅니다.

installing podman

Podman은 데몬이 없기 때문에 어떤 데몬도 시작하지 않고 바로 실행할 수 있습니다.

다음 명령을 실행하여 Podman 버전 및 설치에 대한 자세한 정보를 확인합니다.

podman version

다음은 이 글을 작성하는 동안의 현재 Podman 버전 출력입니다:

checking podman version

또한 다음 명령을 사용하여 Podman 설치 세부정보를 확인할 수 있습니다.

podman info

비루트 사용자로 Podman 실행

이 섹션에서는 비루트 사용자에 대해 Podman을 설정합니다. 새 사용자를 만들고 새 비루트 사용자가 Podman으로 컨테이너를 실행하고 실행할 수 있도록 합니다.

다음 명령을 실행하여 ‘alice‘라는 새 사용자를 만들고 비밀번호를 설정합니다. 프롬프트가 표시되면 새 비밀번호를 입력한 후 반복합니다.

sudo useradd -m -s /bin/bash alice  
sudo passwd alice

이제 새 사용자 ‘alice‘를 ‘wheel‘ 그룹에 추가합니다. 이렇게 하면 새 사용자가 ‘sudo‘를 실행하고 루트가 될 수 있습니다.

sudo usermod -aG wheel alice

그 후, 다음 명령을 실행하여 사용자 ‘alice’에 대한 지속성을 활성화합니다. 이렇게 하면 사용자 ‘alice’가 로그아웃하더라도 컨테이너 프로세스를 오랜 시간 동안 실행할 수 있습니다.

sudo loginctl enable-linger alice

다음으로, 아래 명령을 사용하여 새 사용자 ‘alice‘로 로그인합니다.

su - alice

create new user

아래의 ‘podman‘ 명령을 실행하여 이미지 ‘hello-world‘로 새 컨테이너를 실행합니다.

podman run hello-world

성공하면 다음과 같은 출력이 표시됩니다:

running container hello-world

마지막으로, 다음 ‘podman’ 명령을 실행하여 실행 중인 컨테이너 및 종료된 컨테이너 목록을 확인합니다.

podman ps -a

구성이 성공적이라면, 상태가 ‘Exited‘인 기본 이미지 ‘hello-world‘가 있는 컨테이너를 볼 수 있어야 합니다.

컨테이너 이미지 찾기

기본적으로 Podman은 Redhat 이미지 레지스트리, quay.io 및 DockerHub와 같은 여러 이미지 레지스트리에서 컨테이너 이미지를 검색합니다. ‘/etc/containers/registries.conf’ 구성에 더 많은 컨테이너 이미지 레지스트리를 추가할 수 있습니다.

이 예제에서는 DockerHub를 컨테이너 레지스트리로 사용할 것이므로 시작해 보겠습니다.

다음 명령을 실행하여 ‘httpd‘를 포함하는 새로운 컨테이너 이미지를 찾습니다.

podman search httpd

아래는 터미널에서 받아야 할 출력입니다:

searching container

‘–limit’ 옵션을 사용하여 출력을 제한할 수도 있습니다. 다음과 같이 입력합니다.

podman search httpd --limit 3

이렇게 하면 각 컨테이너 이미지 레지스트리에서 상위 세 개의 컨테이너 이미지만 표시됩니다.

finding images top 3

마지막으로, ‘–filter’ 옵션을 다음과 같이 사용할 수 있습니다.

podman search httpd --filter=is-official

이렇게 하면 공식 컨테이너 이미지만 표시됩니다.

이미지 다운로드

컨테이너 이미지를 찾은 후, 다음 단계는 레지스트리에서 컨테이너 이미지를 다운로드하는 것입니다.

다음 명령을 실행하여 태그 ‘alpine‘가 있는 이미지 ‘httpd‘를 다운로드합니다.

podman pull httpd:alpine

사용할 이미지 레지스트리를 선택합니다. 이 예제에서는 DockerHub를 사용할 것입니다.

소스가 선택되면 다운로드 프로세스가 시작됩니다.

pull images

다운로드가 완료되면 다음 명령을 실행하여 AlmaLinux 서버에서 사용 가능한 이미지를 확인합니다.

podman images

이 시점에서 성공하면 quay.io에서 ‘hello-world‘ 이미지와 DockerHub에서 ‘httpd‘ 이미지 두 개를 가져와야 합니다.

이미지 검사

이미지를 검사하는 것은 컨테이너가 어떻게 시작될지를 자세히 알아보는 강력한 방법입니다. Podman과 Docker에서는 ‘inspect’ 옵션으로 이미지를 검사할 수 있습니다.

다음 명령을 실행하여 이미지 ‘httpd:alpine‘에 대한 자세한 정보를 가져옵니다.

podman inspect docker.io/library/httpd:alpine

이렇게 하면 생성 날짜, 크기, 기본 작업 디렉토리, 시작 명령, 노출된 포트 등과 같은 이미지에 대한 자세한 정보가 표시됩니다.

detailed image

추가 매개변수를 사용하여 확인하고 싶은 부분을 지정할 수도 있습니다. 다음과 같이 입력합니다.

podman inspect --format "size: {{.Size}}" docker.io/library/httpd:alpine  
podman inspect --format "ports: {{.Config.ExposedPorts}}" docker.io/library/httpd:alpine  
podman inspect --format "workdir: {{.Config.WorkingDir}}" docker.io/library/httpd:alpine

이렇게 하면 이미지의 크기, 기본 노출 포트 및 기본 작업 디렉토리가 표시됩니다.

컨테이너 실행

이 섹션에서는 Podman으로 컨테이너를 실행하는 방법을 배웁니다.

다음 명령을 입력하여 ‘httpd’라는 새 컨테이너를 실행하고, 호스트 머신에서 포트 8080을 노출하며, 이미지 ‘httpd:alpine‘을 사용합니다. 또한, ‘–rm‘ 매개변수는 컨테이너가 중지되면 자동으로 컨테이너를 제거합니다.

podman run -it --rm -d -p 8080:80 --name httpd docker.io/library/httpd:alpine

성공하면 새 컨테이너 ID의 무작위 문자열과 숫자를 받게 됩니다.

다음 명령을 사용하여 실행 중인 컨테이너를 확인합니다. 호스트 머신에서 포트 8080을 사용하여 상태가 ‘Up‘인 컨테이너 ‘httpd’를 확인해야 합니다.

podman ps

다음으로, 아래의 curl 명령을 사용하여 컨테이너 ‘httpd’를 확인할 수 있습니다. 아래 예제의 IP 주소를 서버 IP 주소로 바꾸는 것을 잊지 마세요.

curl http://192.168.5.20:8080/

성공하면 다음과 같은 출력이 표시됩니다:

또한, 웹 브라우저를 통해 ‘httpd’ 컨테이너에 접근할 수도 있습니다. 웹 브라우저를 열고 서버 IP 주소 뒤에 컨테이너 포트 8080을 입력하여 방문하세요 (예: http://192.168.5.20:8080/).

성공하면 컨테이너 ‘httpd‘의 기본 index.html 페이지가 다음과 같이 표시됩니다:

컨테이너 로그 확인

컨테이너 ‘httpd’가 실행 중이므로 이제 컨테이너의 로그를 확인합니다. 이는 애플리케이션 디버깅에 유용합니다.

컨테이너 ‘httpd‘의 모든 로그를 표시하려면 다음 명령을 실행합니다.

podman logs httpd

이것은 컨테이너 ‘httpd’의 로그 예시입니다.

다음으로, ‘–tail’ 매개변수를 사용하여 로그 출력을 줄일 수 있습니다. 다음과 같이 입력합니다.

podman logs --tail 20 httpd

이 예제에서 매개변수 ‘tail 20 ‘은 컨테이너 ‘httpd‘의 최신 20 줄의 로그를 표시합니다.

컨테이너 중지

이제 컨테이너를 중지하려면 간단히 *podman stop*을 실행합니다.

다음 명령을 실행하여 컨테이너 ‘httpd‘를 중지합니다.

podman stop httpd

컨테이너 ‘httpd‘가 중지되면, 아래 명령을 실행하여 시스템에서 사용 가능한 컨테이너 목록을 확인합니다.

podman ps  
podman ps -a

컨테이너 ‘httpd‘는 중지된 후 자동으로 삭제됩니다. 이는 컨테이너를 ‘–rm‘ 매개변수로 실행했기 때문입니다.

사용자 지정 볼륨으로 컨테이너 실행

이 예제에서는 사용자 지정 볼륨으로 새 컨테이너를 실행합니다. 이는 호스트 머신의 로컬 디렉토리를 컨테이너에 마운트합니다.

사용자 alice의 홈 디렉토리 내에 새 ‘data‘ 디렉토리를 생성합니다. 그런 다음 nano 편집기를 사용하여 ‘data‘ 디렉토리 내에 새 ‘index.html‘ 파일을 생성합니다.

mkdir -p ~/data/  
nano ~/data/index.html

다음 HTML 스크립트를 삽입합니다.

  
  
  
    
  컨테이너 Nginx에 오신 것을 환영합니다  
  
  
  

Podman으로 관리되는 httpd 컨테이너에서 인사드립니다

파일을 저장하고 닫습니다.

이제 다음 명령을 실행하여 사용자 지정 볼륨 ‘data‘ 디렉토리로 새 컨테이너 ‘httpd’를 실행합니다. 이 디렉토리는 컨테이너의 ‘ /usr/local/apache2/htdocs ‘ 디렉토리에 마운트됩니다.

podman run --privileged=true -it --rm -d -p 8080:80 --name httpd -v ~/data:/usr/local/apache2/htdocs docker.io/library/httpd:alpine

또한, 이 컨테이너는 추가 매개변수 ‘–privileged=true‘로 실행되고 있습니다. 이는 테스트를 위한 것이며, 여전히 컨테이너는 루트 사용자로 실행되지 않고 사용자 ‘alice‘로 실행됩니다. Podman의 특권 플래그에 대한 자세한 정보를 확인하세요.

다음 명령을 실행하여 시스템에서 실행 중인 컨테이너를 확인합니다.

podman ps

성공하면 상태가 ‘Up‘이고 호스트 머신에서 포트 8080이 노출된 새 컨테이너 ‘httpd‘를 볼 수 있어야 합니다.

아래의 curl 명령을 실행하여 새 컨테이너 ‘httpd‘를 확인합니다.

curl http://192.168.5.21:8080/

이전에 생성한 index.html 스크립트의 출력을 받아야 합니다.

accessing container

웹 브라우저에서 http://192.168.5.21:8080/에 접속하면 다음과 같은 사용자 지정 페이지가 표시됩니다:

access container

컨테이너에 로그인

httpd‘ 컨테이너가 실행 중이므로, ‘podman exec‘ 명령을 사용하여 셸을 통해 컨테이너에 접근할 수 있습니다.

다음 명령을 사용하여 컨테이너 ‘httpd‘에 로그인합니다. 이는 컨테이너 ‘httpd‘에서 ‘ /bin/sh ‘ 셸을 실행하고 현재 세션에 연결합니다.

podman exec -it httpd /bin/sh

로그인하면 ‘WorkingDir‘ 디렉토리에 있어야 합니다. 이 예제에서 기본 WorkingDir은 ‘ /usr/local/apache2 ‘ 디렉토리입니다.

이제 컨테이너 ‘httpd‘에서 다음 명령을 실행합니다. 현재 사용자, 컨테이너의 로컬 IP 주소 및 컨테이너의 기본 게이트웨이를 확인합니다.

id  
  
ip a  
route -n

다른 IP 주소와 게이트웨이가 출력될 수 있지만, 비슷해야 합니다:

accessing container

팟 실행 및 관리

Podman에서는 팟을 생성하고 실행할 수 있습니다. 팟은 컨테이너의 래퍼로, 여러 컨테이너가 단일 팟에서 실행될 수 있습니다. Kubernetes와 마찬가지로 팟은 애플리케이션이 실행되는 가장 작은 엔터티입니다.

Podman을 사용하면 Kubernetes 없이도 팟을 생성하고 실행할 수 있습니다.

다음 명령을 실행하여 이미지 ‘httpd:alpine‘로 새 팟 httpdTest를 생성하고 호스트 머신에서 포트 9090을 노출합니다.

podman run -dt --pod new:httpdTest -p 9090:80 docker.io/library/httpd:alpine

성공하면 팟 ID의 무작위 문자열과 숫자를 받게 됩니다.

다음 명령을 실행하여 시스템에서 실행 중인 팟을 확인합니다.

podman pod ls

상태가 ‘Running‘이고 2개의 컨테이너가 있는 팟 ‘httpdTest‘를 볼 수 있어야 합니다.

create pod

이제 팟에 대해 ‘inspect‘ 옵션을 사용할 수 있습니다. 다음과 같이 입력합니다.

podman pod inspect httpdTest

팟 httpdTest에 대한 자세한 정보를 받아야 합니다.

podman inspect pod

다음 명령을 사용하여 팟 내에서 실행 중인 컨테이너 수와 컨테이너 이름을 확인할 수 있습니다.

podman pod inspect --format="containers: {{.NumContainers}}" httpdTest  
podman pod inspect --format "{{.Containers}}" httpdTest

다음과 같은 출력을 받을 수 있습니다:

마지막으로, 호스트 머신에서 포트 9090에서 실행 중인 팟 httpdTest에 접근하려면 다음 명령을 실행합니다. 성공하면 팟 httpdTest에서 실행 중인 컨테이너의 기본 index.html 페이지를 받아야 합니다.

curl http://192.168.5.21:9090/

결론

축하합니다! 이제 AlmaLinux 9에 Podman을 설치했습니다. 또한 이미지 및 컨테이너 관리를 위한 Podman의 기본 사용법을 배웠습니다. 또한 Podman으로 팟을 생성하고 실행하는 방법도 배웠습니다.

Share: X/Twitter LinkedIn

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

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