가끔 보자, 하늘.

보안망에서 docker를 대신할 podman 본문

개발 이야기/인프라 구축 및 운영

보안망에서 docker를 대신할 podman

가온아 2025. 8. 18. 09:00

개발 시스템이 보안망에 있다면 root 권한을 요구하는 docker는 보통 사용하지 못합니다. 그래서 그 대안으로 podman을 사용합니다. 아직 production 환경에서는 docker를 그대로 사용하고 있기 때문에 podman을 docker 검증용으로 쓰기도 합니다. production 환경에서 얼마나 사용하는지는 모르겠네요. 어쨌든 production 환경에서도 쓸 수 있다고 해서 정리해 봤습니다.

 


Podman 설치 및 Docker 환경 시뮬레이션 매뉴얼

Podman은 OCI(Open Container Initiative) 컨테이너 및 Pod를 관리하는 도구로, 개발 및 프로덕션 환경 모두에서 활용 가능하며 Docker 환경과의 높은 호환성을 제공합니다.


1. Podman 설치 (Installation)

제공된 소스에는 Podman의 특정 설치 명령어가 포함되어 있지 않지만, 설치 환경 및 관련 정보는 다음과 같습니다:

  • 지원 운영 체제:
    • Linux 시스템: Podman은 Linux에서 컨테이너를 직접 실행합니다.
    • Mac 및 Windows 시스템: Podman은 Podman 관리 가상 머신(podman machine)을 사용하여 Mac 및 Windows 시스템에서도 사용 가능합니다.
  • Podman Desktop 활용:
    • Podman Desktop은 Linux, Windows, Mac 시스템에서 Podman 및 Kubernetes를 위한 로컬 개발 환경을 제공하는 완벽한 기능의 데스크톱 UI 프런트엔드입니다.
    • 비-Linux 운영 체제에서는 podman machine 백엔드를 사용하여 컨테이너를 실행합니다.
    • Podman Desktop은 이미지 빌드, 풀, 푸시, 컨테이너 및 Pod 생성 및 관리, Kubernetes YAML 작업 등 전체 컨테이너 라이프사이클 관리를 지원합니다.
  • 루트리스(Rootless) Podman:
    • Podman은 루트 권한 없이도 일반 사용자로서 쉽게 실행될 수 있습니다.
    • 루트리스 Podman은 컨테이너를 실행하는 사용자가 가진 권한보다 더 많은 권한을 가지지 않으므로 보안이 강화됩니다.
    • 대부분의 최신 Podman 릴리스는 추가 구성 없이 루트리스로 실행될 수 있지만, 일부 운영 체제에서는 추가 구성이 필요할 수 있습니다. 관리자에 의한 약간의 설정이 필요할 수 있습니다.
    • 관련 설치 안내 및 설정 방법은 별도의 문서에 자세히 설명되어 있습니다.
  • 설치 안내:
    • Podman 프로젝트 웹사이트(podman.io)에는 환경별 Podman 설치 방법에 대한 **"Installation notes"**가 제공됩니다.

2. Docker 환경 시뮬레이션 (Docker Environment Simulation)

Podman은 Docker 환경과의 높은 호환성을 통해 기존 Docker 기반 워크로드를 쉽게 전환하거나 테스트할 수 있도록 돕습니다.

  • Docker 호환 CLI 인터페이스:
    • Podman은 Docker와 호환되는 CLI(Command Line Interface) 인터페이스를 지원합니다.
    • 이는 사용자가 Docker 명령어에 익숙한 방식으로 Podman을 사용할 수 있음을 의미합니다. 예를 들어, podman run 명령어는 docker run 명령어의 기능을 에뮬레이션합니다.
    • 이를 통해 로컬 및 원격 시스템에서 컨테이너를 실행할 수 있습니다.
  • Docker 명령어 상호 변환 표:
    • "Podman Usage Transfer" 문서에는 Docker 명령어와 그에 상응하는 Podman 명령어들을 보여주는 표가 포함되어 있습니다.
    • 이 표는 Docker를 사용하는 인프라에서 Podman으로 운영(ops) 및 개발(dev) 전환을 위한 유용한 정보를 제공합니다. 따라서 기존 Docker 스크립트나 워크플로우를 Podman으로 변경하는 데 직접적인 가이드라인을 제공합니다.
  • Docker 호환 REST API:
    • Podman은 Docker 호환 인터페이스와 고급 Podman 기능을 노출하는 개선된 인터페이스를 제공하는 REST API를 지원합니다.
    • 이는 Docker API를 사용하는 자동화 도구나 스크립트가 Podman 환경에서도 큰 변경 없이 작동할 수 있음을 의미하며, 서비스 환경에서의 통합 및 테스트에 매우 유용합니다.
  • 컨테이너 및 이미지 관리의 전문화:
    • Podman은 프로덕션 환경에서 OCI 이미지와 컨테이너를 관리하고 유지하는 데 특화되어 있습니다.
    • 이는 Docker와 유사하게 컨테이너화된 서비스의 배포, 실행, 모니터링 및 유지보수를 지원하므로, 기존 Docker 기반 서비스 환경을 Podman으로 테스트하고 검증하는 데 적합합니다.
    • podman run 명령어가 "오랫동안 유지될(long lived)" 목적으로 "전통적인 컨테이너"를 생성하는 데 사용되는 반면, buildah run은 이미지 빌드 과정에서 컨테이너 내부에 콘텐츠를 추가하는 데 사용되는 등, Podman과 Buildah의 역할을 이해하는 것이 중요합니다.

지금은 개발 시스템에서만 사용 중인데 다음 서비스 구축시에는 podman도 써봐야 겠네요. -_-b

 

반응형