Podman là một công cụ mã nguồn mở dùng để tạo, quản lý và chạy các container và pod theo chuẩn OCI trên các hệ điều hành Linux, macOS và Windows. Khác với Docker, Podman hoạt động không cần daemon (trình nền), chạy container trực tiếp dưới quyền người dùng, mang lại nhiều lợi ích về bảo mật và tính linh hoạt.
Ưu điểm của Podman
1. Hoạt động không cần Daemon
Podman không cần một dịch vụ nền trung tâm. Mỗi container chạy như một tiến trình con của người dùng, giúp giảm tài nguyên sử dụng và cải thiện bảo mật bằng cách loại bỏ điểm lỗi tập trung.
2. Hỗ trợ chạy không cần quyền Root
Podman cho phép chạy container mà không cần đặc quyền root. Điều này giảm đáng kể nguy cơ leo thang đặc quyền và rất phù hợp cho hệ thống đa người dùng hoặc môi trường có yêu cầu bảo mật cao.
3. Tương thích với Docker
Giao diện dòng lệnh (CLI) của Podman phần lớn tương thích với Docker, cho phép sử dụng hầu hết các lệnh và quy trình làm việc từ Docker mà không cần sửa đổi. Podman có thể build và chạy container từ Dockerfile và làm việc với image của Docker.
4. Hỗ trợ Pod và tích hợp Kubernetes
Podman hỗ trợ native cho pod — nhóm container chia sẻ tài nguyên, tương tự như trong Kubernetes. Điều này giúp dễ dàng chuyển khối lượng công việc sang môi trường Kubernetes.
5. Tích hợp với Systemd
Podman có thể tạo các file unit systemd cho container và pod, giúp dễ dàng quản lý vòng đời container và đảm bảo container khởi động cùng hệ thống.
6. Hiệu năng
Do không có daemon trung tâm, Podman tiêu tốn ít tài nguyên hơn và khởi động container nhanh hơn, đặc biệt hữu ích trong môi trường có nhiều container hoặc tài nguyên hạn chế.
Nhược điểm của Podman
1. Đường cong học tập
Podman giới thiệu các khái niệm như chế độ không root, cấu hình lưu trữ và mạng tùy chỉnh, có thể yêu cầu người dùng (đặc biệt là từ Docker) phải học thêm.
2. Hệ sinh thái nhỏ hơn
So với Docker, hệ sinh thái và các công cụ tích hợp của Podman còn hạn chế, gây khó khăn khi tìm giải pháp hoặc tích hợp với công cụ khác.
3. Hạn chế về mạng
Một số tính năng mạng nâng cao còn chưa hoàn thiện hoặc cần cấu hình thủ công, đặc biệt trong các tình huống phức tạp như định tuyến hoặc cân bằng tải.
4. Tính trưởng thành của tính năng
Các tính năng như orchestration (điều phối) và high availability (khả năng sẵn sàng cao) còn đang được hoàn thiện và có thể cần công cụ bổ sung hoặc cấu hình thủ công.
Cài đặt và thiết lập Podman
1. Trên Linux
Debian/Ubuntu:
sudo apt update && sudo apt upgrade -y
sudo apt install -y podman
podman --version
CentOS/RHEL:
sudo yum -y install podman
podman --version
2. Trên macOS
Dùng Homebrew:
brew install podman
podman machine init
podman machine start
podman info
Hoặc bạn có thể tải về từ trang chính thức của Podman hoặc sử dụng Podman Desktop nếu muốn trải nghiệm GUI. Vì container trên macOS chạy trong máy ảo nhẹ, bạn cần khởi tạo và khởi động máy Podman sau khi cài đặt.
Podman Desktop (giao diện GUI):
- Tải file
.dmg
từ trang web chính thức Podman Desktop. - Kéo biểu tượng Podman Desktop vào thư mục Applications.
- Mở Podman Desktop và làm theo hướng dẫn để cài Podman Engine nếu cần.
3. Trên Windows
- Tải trình cài đặt từ trang chính thức hoặc GitHub của Podman.
- Chạy trình cài và làm theo hướng dẫn.
- Podman sử dụng WSL2 (Windows Subsystem for Linux v2) để chạy container.
Sau khi cài đặt, khởi tạo và khởi động Podman bằng:
podman machine init podman machine start podman info
Bạn có thể sử dụng Podman từ PowerShell, CMD hoặc trong môi trường WSL.
Cấu hình cơ bản Podman
Podman có thể được tùy chỉnh thông qua các file cấu hình và biến môi trường.
Các file cấu hình chính:
containers.conf
: Thiết lập mặc định toàn hệ thống (runtime, mạng, giới hạn tài nguyên).storage.conf
: Cấu hình driver và tuỳ chọn lưu trữ.registries.conf
: Danh sách registry container dùng để pull/push image.policy.json
: Chính sách xác minh chữ ký image.
Biến môi trường thường dùng:
CONTAINERS_CONF
: Đường dẫn tới containers.confCONTAINERS_REGISTRIES_CONF
: Đường dẫn tới registries.confCONTAINERS_STORAGE_CONF
: Đường dẫn tới storage.confCONTAINER_HOST
: URL dịch vụ Podman từ xa (ví dụ: unix:///run/user/$UID/podman/podman.sock)TMPDIR
: Thư mục lưu tạm imageXDG_CONFIG_HOME
,XDG_DATA_HOME
,XDG_RUNTIME_DIR
: Kiểm soát nơi lưu cấu hình, image và dữ liệu runtime (rất quan trọng ở chế độ không root)
Ví dụ: Tạo và quản lý Pod
Tạo một pod trống:
podman pod create --name demo-pod
Liệt kê các pod:
podman pod ls
Liệt kê container trong pod:
podman ps -a --pod
Thêm container vào pod:
podman run -dt --pod demo-pod nginx
Bảng so sánh Podman và Docker
Kết luận
Podman là một lựa chọn mạnh mẽ thay thế cho Docker, với ưu điểm về bảo mật, hỗ trợ không cần root, và khả năng tích hợp pod/Kubernetes native. Mặc dù hệ sinh thái của Podman còn đang phát triển và một số tính năng nâng cao chưa hoàn thiện, nó vẫn là công cụ phù hợp cho lập trình viên và quản trị viên cần một công cụ container hiện đại, linh hoạt và an toàn. Việc cài đặt đơn giản trên tất cả nền tảng lớn, có cả CLI và GUI. Cấu hình dễ tùy biến giúp Podman phù hợp với nhiều trường hợp sử dụng khác nhau.