본문 바로가기
Docker

[Docker] Podman

by Yoon_estar 2024. 10. 11.
728x90
반응형

개요

Podman은 컨테이너와 관련된 작업을 수행할 수 있는 컨테이너 엔진으로, Docker와 유사한 기능을 제공하지만 몇 가지 중요한 차이점이 있는 도구입니다. Podman은 주로 컨테이너를 생성, 관리, 배포할 수 있는 CLI(Command Line Interface)를 제공하며, 무거운 데몬 프로세스를 사용하지 않는 점에서 Docker와 구별됩니다.

Podman의 특징

1. 무데몬 (Daemonless) 구조

  • Docker와 달리 Podman은 별도의 데몬 프로세스를 필요로 하지 않습니다.
  • Docker는 모든 컨테이너와 이미지를 관리하기 위해 중앙의 dockerd 데몬을 사용하지만, Podman은 각각의 컨테이너가 독립적인 프로세스로 실행되므로 시스템 리소스가 더 효율적으로 사용됩니다.
  • 무데몬 구조 덕분에 데몬 종료나 충돌로 인한 문제가 줄어들며, 보안 측면에서도 더 안전합니다.

2. Rootless 모드 지원

  • Podman은 root 권한 없이도 컨테이너를 실행할 수 있는 Rootless 모드를 제공합니다.
  • 일반 사용자가 자신의 홈 디렉토리에서 컨테이너를 관리하고 실행할 수 있으므로 보안에 민감한 환경에서 안전하게 사용할 수 있습니다.
  • Rootless 모드는 root 권한을 가진 사용자만이 컨테이너를 실행할 수 있는 Docker에 비해 강력한 보안 장점을 제공합니다.

3. Docker CLI 와 호환 가능

  • Podman의 CLI 명령어는 Docker와 매우 유사합니다. 따라서 기존 Docker 사용자들이 쉽게 Podman으로 전환할 수 있습니다.
  • 예를 들어 podman run 명령어는 docker run 명령어와 동일한 방식으로 작동합니다.
  • 대부분의 Docker 명령어가 Podman에서도 동일하게 사용될 수 있어 학습 곡선이 낮습니다.

4. Kubernetes와의 연동

  • Podman은 컨테이너를 관리할 뿐만 아니라, 컨테이너 그룹(포드)을 관리할 수 있는 기능도 제공합니다.
  • Podman의 "pod" 개념은 Kubernetes의 Pod와 유사하며, Kubernetes 클러스터로 쉽게 이전할 수 있도록 YAML 형식으로 파일을 생성할 수 있습니다.
  • podman generate kube 명령어를 사용하여 Kubernetes 매니페스트 파일을 생성하고, 이를 Kubernetes 클러스터에서 사용할 수 있습니다.

5. Systemd 통합

  • Podman은 Systemd와의 통합을 쉽게 지원합니다. podman generate systemd 명령어를 통해 컨테이너를 systemd 서비스로 변환할 수 있습니다.
  • 이를 통해 컨테이너를 Systemd 서비스를 이용해 관리하고, 부팅 시 자동으로 실행되도록 설정할 수 있습니다.

6. 보안 및 호환성

  • Podman은 보안과 호환성 측면에서 강점을 가지고 있습니다.
  • SELinux, AppArmor 등 Linux 커널 보안 기능을 지원하여 컨테이너의 보안을 강화할 수 있으며, 컨테이너별로 별도의 네임스페이스를 사용하므로 컨테이너 격리가 더욱 철저합니다.
  • Docker Compose와의 호환성을 위해 podman-compose라는 툴도 제공하여, 기존 Docker Compose 파일을 사용할 수 있게 지원합니다.
반응형