TL;DR

Podman là container runtime miễn phí, rootless by default, tương thích 100% CLI với Docker - nhưng không có daemon chạy nền. Khi container bị exploit và attacker thoát ra ngoài, họ chỉ có quyền của user thường - không leo lên root host được. Phiên bản hiện tại: Podman 5.8.2, CNCF Sandbox Project từ tháng 11/2024, runtime mặc định trên RHEL và OpenShift.

Sơ đồ kiến trúc: nerdctl, docker, ctr đều đi qua daemon trung gian - Podman thì không

Vấn đề với Docker daemon

Docker hoạt động theo mô hình client-server: CLI gửi lệnh đến dockerd - một process nền chạy với quyền root liên tục. Thiết kế này tạo ra bốn vấn đề thực tế trong môi trường sản xuất.

Đầu tiên là single point of failure: daemon crash là mất kiểm soát tất cả container đang chạy. Thứ hai là attack surface lớn - process root sống mãi mãi là mục tiêu hấp dẫn cho attacker. Thứ ba là container escape nguy hiểm: nếu attacker thoát ra khỏi container, họ có ngay quyền root trên host. Và từ năm 2022, Docker Desktop bắt đầu tính phí enterprise cho tổ chức trên 250 nhân viên hoặc doanh thu trên $10M - không phải con số nhỏ với team mid-size.

Podman giải quyết cả bốn vấn đề trên bằng một quyết định kiến trúc đơn giản: không có daemon.

Kiến trúc daemonless hoạt động ra sao

Thay vì gửi lệnh đến daemon, mỗi lệnh podman run spawn trực tiếp một container process làm child process của user đang đăng nhập. Không có trung gian, không có socket root, không có single point of failure. Stack kỹ thuật bên dưới:

  • crun 1.14 - OCI-compliant runtime thay thế runc, tích hợp native với systemd
  • Linux user namespaces - cho phép user thường chạy container không cần sudo
  • Netavark - network backend mới thay thế CNI (rootful mode)
  • slirp4netns - network stack user-mode cho rootless mode (đánh đổi: latency cao hơn)
  • FUSE-overlayfs - storage driver cho rootless

Lifecycle management - vấn đề thực tế nhất khi không có daemon - được giải quyết qua systemd. Podman tích hợp sâu với systemd thông qua Quadlet: bạn viết file .container định nghĩa container như một service, systemd generator tự tạo .service file tương ứng. Container tự restart khi reboot, socket activation cho phép container chỉ khởi động khi có request đến - không cần idle ăn RAM 24/7 và tự stop sau 30 giây không có traffic.

Benchmark với crun 1.14 + systemd 255 ghi nhận attack surface giảm 78% so với Docker rootful, và cold-start nhanh hơn do không có daemon round-trip overhead.

CLI quen thuộc, migration gần như zero-effort

Bạn đã quen với Docker? Hầu hết distro Linux đề xuất thẳng:

alias docker=podman

Các lệnh mapping 1:1: podman run, podman exec, podman kill, podman ps, podman build, podman pull, podman push. Dockerfile của bạn dùng được nguyên si. Images OCI tương thích hoàn toàn với Docker Hub, GHCR, và bất kỳ registry nào.

Điểm cộng thêm cho team dùng Kubernetes: podman generate kube export K8s YAML từ container đang chạy, podman play kube deploy manifest đó ngay trên máy local mà không cần full cluster. Podman align với CRI-O - Kubernetes-native runtime - trong khi Dockershim đã bị remove khỏi Kubernetes từ phiên bản 1.24.

Với developer dùng GUI, Podman Desktop (CNCF Sandbox từ tháng 11/2024) cung cấp giao diện đồ họa miễn phí thay thế Docker Desktop - tích hợp Compose, Extensions, và Kubernetes integration.

Điểm mạnh và giới hạn

Nên dùng Podman khi:

  • Chạy production Linux (RHEL, Fedora, Ubuntu) với yêu cầu bảo mật cao
  • Team dùng Kubernetes/OpenShift và muốn local dev khớp với production runtime
  • CI/CD pipeline trên shared runner cần rootless containers tránh privilege escalation
  • Muốn thoát khỏi Docker Desktop license cost - Podman miễn phí hoàn toàn (Apache 2.0)
  • Serverless-lite: rootless Podman + systemd socket activation, container tự stop sau 30 giây idle

Hạn chế cần biết:

  • Không hỗ trợ Docker Swarm
  • Podman Compose kém mature hơn Docker Compose cho multi-service phức tạp
  • Rootless networking (slirp4netns) có latency cao hơn CNI - workaround: dùng rootful Podman hoặc Netavark
  • Trải nghiệm macOS/Windows kém hơn Docker Desktop (cần chạy qua Linux VM)
  • Ecosystem tutorials ít hơn, community nhỏ hơn Docker

So sánh nhanh với Docker

Tiêu chíPodman 5.8.2Docker
DaemonKhông códockerd chạy root liên tục
Rootless mặc địnhCần config thêm
Cold-startNhanh hơnChậm hơn (daemon overhead)
Docker ComposePodman Compose (partial)Đầy đủ, mature
Docker SwarmKhông hỗ trợ
KubernetesPod-native, CRI-O alignedDockershim removed (K8s 1.24)
GiáMiễn phí (Apache 2.0)Tính phí enterprise

Thực hành: thử ngay với lab của iximiuz

@iximiuz đã chuẩn bị 3 hands-on challenge để bạn thử và so sánh trực tiếp với Docker:

Nếu bạn đang chạy RHEL, Fedora, hoặc bất kỳ môi trường production Linux nào yêu cầu bảo mật nghiêm ngặt, Podman xứng đáng có chỗ trong workflow của bạn. Với ai đang tìm cách thoát khỏi chi phí Docker Desktop, đây là lựa chọn drop-in gần như hoàn hảo - không cần học lại lệnh, không cần viết lại Dockerfile.

Nguồn: podman.io, Last9 - Podman vs Docker 2026, @iximiuz on X.