프로그래밍/Docker

[Docker] Docker VS Podman

Victory_HA 2023. 2. 24. 11:15

참조 : https://www.lambdatest.com/blog/podman-vs-docker/

  • 일반적으로 Podman과 Docker는 동일한 작업을 수행합니다.

Docker VS Podman

  • Docker 데몬은 단일 호스트에서 모든 컨테이너를 관리하는 백그라운드 프로세스입니다.
  • 모든 Docker 이미지, 컨테이너, 네트워크, 스토리지 등을 처리할 수 있습니다.
  • Docker는 컨테이너를 관리하기 위해 데몬이 필요하므로 프로세스를 실행하려면 루트 권한이 필요합니다.

  • 반면 Podman은 데몬이 필요하지 않습니다.
  • 사용자가 컨테이너(루트리스) 실행을 시작하는 데 도움이 되는 (데몬리스 아키텍처)가 있습니다.
  • 즉, Podman은 컨테이너를 관리하기 위해 루트 권한이 필요하지 않습니다.

Security

  • Docker는 컨테이너를 관리하기 위해 데몬이 필요하므로 프로세스를 실행하려면 루트 권한이 필요합니다.
  • 공격자가 컨테이너 중 하나에 액세스할 수 있는 방법을 찾았다고 가정해 봅시다.
  • Docker는 루트 권한으로만 실행될 수 있으므로 공격자가 해당 루트 권한으로 서버에서 잘못된 작업을 수행할 수 있습니다.

  • Podman은 컨테이너를 관리하기 위해 루트 권한이 필요하지 않습니다.
  • 마찬가지로 공격자가 컨테이너 중 하나에 액세스할 수 있는 방법을 찾았다고 가정해 봅시다.
  • Podman은 루트 권한을 제한하여 실행될 수 있으므로, 서버에 잘못된 작업을 수행하기 어렵습니다.
  • 따라서 Docker보다 Podman이 더 안전하다고 말할 수 있습니다.

Building images

  • Docker는 자급 자족 플랫폼입니다.
  • 다른 타사 도구 없이도 자체적으로 이미지를 빌드하고 컨테이너를 실행할 수 있습니다.

  • Podman은 컨테이너를 빌드하지 않고 실행하도록 설계되었습니다.
  • Podman은 Buildah를 사용하여 OCI 컨테이너 이미지를 구축할 수 있습니다.
    • Buildah는 OCI(Open Container Initiative) 컨테이너 이미지를 구축하는 오픈 소스 도구입니다.

All in one vs modular

  • Podman와 Docker는 기술적으로 큰 차이점이 있습니다.
  • Docker는 독립적인 단일 도구로 구성된 모놀리식 도구입니다.
    • 모놀리식이란 Docker가 컨테이너를 관리하고 실행하거나 다른 작업을 수행하는 데 필요한 다른 제3자 도구를 의존하지 않는다는 것을 의미합니다.

  • Podman는 특정 작업을 위해 전용 도구를 사용하는 모듈러 접근 방식을 취하고,
  • Podman는 동일한 목표를 달성하기 위해 Docker와는 달리 많은 추가적인 제3자 도구에 의존합니다.
    • 예를 들어, 이미지를 빌드하기 위해 Buildah를 사용하는 반면, Docker는 Buildah나 다른 제3자 도구가 필요하지 않습니다.

Conclusion

  • 두 도구 모두 대규모 애플리케이션을 빌드하고 배포할 수 있습니다.
  • 애플리케이션 보안이나 Kubernetes를 사용하여 컨테이너 오케스트레이션을 계획하는 경우, Podman이 더 나은 선택일 것입니다.
  • 그러나 잘 문서화되어 있고 더 큰 사용자 기반을 가진 도구가 필요한 경우, Docker가 더 나은 선택일 것입니다.