Podman 개요, 설치 방법 및 기본 명령어 소개
컨테이너 기반의 애플리케이션 배포는 최근 몇 년간 IT 업계에서 매우 중요한 기술로 자리 잡았습니다. Docker는 이러한 컨테이너 기술의 선두주자였지만, Docker Daemon에 대한 의존성 및 라이선스 문제로 인해 많은 대안이 등장했습니다. 그 중 하나가 바로 Podman입니다. 이번 글에서는 Podman의 개요와 설치 방법, 사용법을 알아보고, Docker와의 차이점 및 장단점을 비교해보겠습니다.
본론
Podman 개요
Podman은 RedHat에서 개발한 컨테이너 관리 도구로, Docker와 호환되는 인터페이스를 제공하면서도 중요한 차이점을 가집니다. Docker와 달리 Podman은 데몬리스(daemonless) 방식으로 동작하여 루트 권한이 필요 없는 안전한 컨테이너 관리가 가능하다는 점이 특징입니다. 즉, Podman은 Docker와 같은 명령어 인터페이스를 제공하지만 백그라운드에서 지속적으로 실행되는 데몬 프로세스 없이도 컨테이너를 관리할 수 있습니다.
Podman 설치 방법
Podman의 설치는 다양한 운영체제에서 간단하게 이루어질 수 있습니다. 여기서는 Linux와 MacOS에서의 설치 방법을 간단히 소개합니다.
1. Linux
대부분의 Linux 배포판에서는 패키지 관리자를 통해 쉽게 설치할 수 있습니다. 예를 들어, Ubuntu에서는 다음과 같은 명령어를 사용하여 Podman을 설치할 수 있습니다:
sudo apt update
sudo apt install podman
또한, RHEL/CentOS와 같은 배포판에서는 dnf
또는 yum
명령어를 사용하여 설치할 수 있습니다:
- dnf 명령어를 사용하는 경우:
sudo dnf install podman
- yum 명령어를 사용하는 경우 (RHEL 7/CentOS 7 등):
sudo yum install podman
참고) –allowerasing 옵션 이 옵션은 충돌하는 패키지를 제거하고 대신 새 패키지를 설치하려고 할 때 유용합니다. 이 옵션을 사용하면 문제가 되는 패키지를 제거하고 설치가 계속 진행됩니다. docker가 기존에 설치되어있는 경우 오류가 발생하여 해당 옵션 적용이 필요한 것으로 보입니다.
2. MacOS
MacOS에서는 Homebrew를 사용하여 설치할 수 있습니다
brew install podman
설치 후에는 Podman Desktop을 GUI로 활용할 수도 있습니다. 이 도구는 Docker Desktop과 유사하게 컨테이너 관리를 시각적으로 처리할 수 있게 해줍니다.
Podman 사용법
Podman은 Docker와 매우 유사한 명령어 인터페이스를 제공합니다. 따라서 Docker를 사용해본 경험이 있는 사용자라면 쉽게 적응할 수 있습니다.
1. 설치 확인 및 버전 확인
Podman이 정상적으로 설치되었는지 확인하고 버전을 확인하려면 다음 명령어를 사용할 수 있습니다:
podman version
## 실행결과 예시
Version: 4.2.0
API Version: 4.2.0
2. 이미지 관리
Podman을 사용하여 이미지를 검색, 다운로드, 확인, 삭제할 수 있습니다.
- 이미지 검색
podman search [이미지명]
- 이미지 다운로드
podman pull [이미지명]
- 이미지 목록 확인
podman images
실행결과 예시
[root@rocky8 ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/ubuntu latest 59ab366372d5 6 days ago 80.6 MB
- 이미지 삭제
podman rmi [이미지ID]
실행결과 예시
[root@rocky8 ~]# podman rmi 59ab366372d5
Untagged: docker.io/library/ubuntu:latest
Deleted: 59ab366372d56772eb54e426183435e6b0642152cb449ec7ab52473af8ca6e3f
3. 컨테이너 실행 및 관리
Podman을 사용해 컨테이너를 실행하고, 관리할 수 있습니다.
- 컨테이너 실행:
podman run
명령어를 사용하여 컨테이너를 실행할 수 있습니다.
podman run --name [컨테이너명] -d [이미지명]
## 실행결과 예시
c3f279d17e0a
- 실행 중인 컨테이너 목록 확인
podman ps
## 실행결과 예시
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3f279d17e0a docker.io/library/nginx /docker-entry... 5 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp mynginx
- 컨테이너 중지 및 재시작
podman stop [컨테이너명]
podman restart [컨테이너명]
- 컨테이너 삭제
podman rm [컨테이너명]
- 모든 정지된 컨테이너 강제 삭제
podman rm -f $(podman ps -a -q)
- 컨테이너 로그 확인
podman logs [컨테이너명]
4. 네트워킹 및 볼륨 설정
Podman을 사용해 네트워킹 및 볼륨을 설정할 수 있습니다.
- 포트 포워딩하여 실행
podman run -d -p [호스트포트]:[컨테이너포트] [이미지명]
- 호스트 네트워크 사용
podman run -d --net=host [이미지명]
- 호스트 디렉토리 마운트
podman run -d --name [컨테이너명] -v /호스트/디렉토리:/컨테이너/디렉토리 [이미지명]
5. 실행 중인 컨테이너의 셸 접속
Podman을 사용하여 실행 중인 컨테이너의 셸에 접속할 수 있습니다.
podman exec -it [컨테이너명] /bin/bash
6. Pod 관리
Podman의 Pod 기능을 사용하여 여러 컨테이너를 그룹으로 관리할 수 있습니다.
- 새로운 Pod 생성
podman pod create --name [pod명]
- Pod 내부에 컨테이너 추가하여 실행
podman run --pod [pod명] -d [이미지명]
- Pod 삭제
podman pod rm [pod명]
7. 시스템 재부팅 시 자동 실행 설정
Podman에서 컨테이너를 자동으로 시작하기 위해 systemd와 연동할 수 있습니다.
- systemd 유닛 파일 생성
podman generate systemd --name [컨테이너명] --files --new
- 시스템 자동 실행 설정
생성된 파일을
~/.config/systemd/user/
에 복사하고 활성화합니다
mkdir -p ~/.config/systemd/user/
mv [컨테이너명].service ~/.config/systemd/user/
systemctl --user enable [컨테이너명].service
systemctl --user start [컨테이너명].service
Podman vs Docker 비교
특징 | Podman | Docker |
---|---|---|
데몬 사용 | 데몬 없이 작동 (rootless 지원) | 데몬 필요 (root 권한 요구) |
CLI 호환성 | Docker와 호환되는 CLI 제공 | 자체 CLI 제공 |
보안성 | rootless 모드로 보안 강화 | 데몬으로 인해 잠재적 보안 위협 존재 |
시스템 의존성 | 데몬 없음으로 SPoF 제거 | 데몬이 SPoF로 작용 가능 |
이미지 빌드 | buildah 유틸리티 사용 | 자체 빌드 기능 제공 |
이미지 전송 | skopeo 사용 | 자체 push 기능 제공 |
Podman은 특히 보안과 안정성 측면에서 Docker보다 유리한 점이 많습니다. 데몬 없이 작동하므로 시스템의 안정성을 높이고, rootless 모드를 통해 보안성을 강화합니다. 반면, Docker는 여전히 널리 사용되고 있으며 다양한 도구와의 호환성이 뛰어납니다.
출처: https://connect.hyland.com/t5/alfresco-blog/using-podman-with-alfresco/ba-p/124875
결론
Podman은 Docker에 대한 훌륭한 대안으로, 보안과 자원 관리 측면에서 우수한 성능을 제공합니다. 특히 데몬 없이 동작하는 특성 덕분에 시스템 자원을 보다 효율적으로 사용할 수 있으며, 루트리스 컨테이너 지원으로 보안도 강화되었습니다. 반면 Docker에 비해 생태계가 아직 성숙하지 않은 점은 고려해야 할 요소입니다. 각 기술의 장단점을 이해하고, 환경에 맞는 선택을 통해 최적의 컨테이너 관리 방법을 찾는 것이 중요합니다.
참고자료
- RedHat 공식홈페이지 컨테이너 소개자료: RedHat 컨테이너 소개 PDF 다운로드
댓글남기기