Podman은 무엇인가?
최근 많은 기업들이 컨테이너의 표준이된 도커를 대체하는 툴로 Podman을 선택하고 있다고한다. Podman은 어떤 장점이 있기에 도커를 대체할 수 있는 걸까? 우선 Podman은 Red Hat에서 개발한 오픈 소스 컨테이너 개발,관리 툴로 libpod 라이브러리를 사용하여 컨테이너 에코시스템 전체를 관리한다.
POD
Podman은 컨테이너보다 상위개념인 pod를 가지고 있다. 하나의 pod는 다수의 컨테이너를 가질 수 있으며 k8s의 pod와 유사하다. POD를 생성하는 순간 인프라 컨테이너(infra container)를 가지며, 생성 즉시 sleep모드로 전환된다.
즉 Podman은 POD를 이용하여 별도의 격리된 공간을 만들 수 있고, 이 POD에 포함된 컨테이너는 인프라 컨테이너에 의해 다른 컨테이너와 연결된다.
Podman과 Docker의 차이점
Podman과 Docker의 가장 큰 차이점은 데몬이 없다는 점이다. Docker daemon은 컨테이너 이미지를 관리하고 실행하는 과정에서 필요한데, Podman에서는 buildah, skopeo와 같은 툴을 사용하여 Docker보다 좀 더 가볍고 유연한 환경을 구축할 수 있고, daemon이 죽거나 재시작되면 모든 컨테이너가 중지되는 Docker와 달리 Podman은 각 컨테이너들을 fork/exec방식으로 실행하여 별도 구동하기 때문에 안정적으로 실행이 가능하다.
*fork/exec방식이란?fork : 실행중인 부모 프로세스를 복사하여 똑같은 내용의 자식 프로세스 생성exec: 기존의 프로세스를 새로운 프로세스로 전환
Podman은 Docker와 호환 가능한 CLI를 지원하여 기본적으로 Docker에서 지원하는 명령어는 모두 사용 가능하다.
또한
alias docker=podman
명령어를 사용하여 docker 명령어를 podman을 지정해서 사용하는 것도 가능하다.
마치며
Docker에 대해 공부하던중 우연히 Podman의 존재를 알게 되었다. 컨테이너환경을 생각할때 항상 Docker를 먼저 생각했었는데 꼭 그런것은 아닌것 같다. Docker에서 사용한 이미지를 Podman에서 사용가능하다고 하니 여유가 있을 때 Podman으로 Airflow를 구축해봐야겠다. IT분야의 기술은 정말 빠르게 발전하고 배워야할게 많아지는 것 같다.