Nếu bạn đã từng theo dõi các bài viết của chúng tôi về các dịch vụ tự host (self-hosted), chắc hẳn bạn không còn xa lạ với khái niệm container. Với khả năng cô lập vững chắc, tính dễ triển khai cùng mức tiêu thụ tài nguyên (thường là) thấp, container đã trở thành nền tảng cốt lõi cho mọi máy chủ thử nghiệm và trạm làm việc tự host.
Trong khi Docker vẫn là một trong những môi trường runtime container phổ biến nhất, đây không phải là lựa chọn duy nhất dành cho những người thích mày mò. Nếu bạn đang tìm kiếm các giải pháp thay thế Docker, Podman chắc chắn sẽ đứng đầu danh sách. Dưới đây là hướng dẫn nhanh giúp bạn bắt đầu với nền tảng tuyệt vời này, tối ưu cho nhu cầu của người dùng công nghệ Việt Nam.
Giao diện Portainer hiển thị nhiều container đang chạy, minh họa môi trường container hóa
Podman là gì và khác biệt với Docker như thế nào?
Về cốt lõi, cả Podman và Docker đều là các công cụ container hóa, được thiết kế để giúp bạn triển khai các dịch vụ trong môi trường cô lập. Tuy nhiên, thay vì chạy một daemon (một ứng dụng phụ chạy ẩn trong nền) để xử lý các tác vụ container hóa, Podman sở hữu kiến trúc không daemon (daemon-less). Do đó, Podman được đánh giá là an toàn hơn so với đối thủ, bởi vì bạn không có một daemon nào hoạt động như một bề mặt tấn công tiềm tàng cho các mối đe dọa bảo mật.
Màn hình terminal hiển thị lệnh Podman đang chạy trong máy ảo Debian, minh họa hoạt động của Podman
Theo mặc định, Podman chạy các container trong môi trường không có quyền root (rootless), trong khi Docker yêu cầu bạn phải tự kích hoạt chế độ rootless nếu muốn tránh các lỗ hổng bảo mật liên quan đến việc triển khai container với đặc quyền root. Đúng như tên gọi của mình, Podman có khả năng kết hợp nhiều container thành các “pods”. Tương tự như các pod trong Kubernetes, pod của Podman là một tập hợp các dịch vụ chia sẻ tài nguyên mạng và lưu trữ chung, lý tưởng khi bạn muốn một số ứng dụng làm việc cùng nhau trong khi vẫn giữ chúng cô lập với phần còn lại của hệ thống tự host của bạn.
Hướng dẫn cài đặt Podman trên Linux
Khác với Docker, Podman đã được tích hợp sẵn trong hầu hết các bản phân phối dựa trên RHEL. Vì vậy, nếu bạn đang sử dụng Fedora hoặc các lựa chọn thay thế Red Hat, bạn có thể chuyển sang phần tiếp theo. Đối với những người dùng các bản phân phối dựa trên Debian, bạn có thể cài đặt Podman từ kho apt với các bước sau:
-
Mở giao diện terminal trên bản phân phối của bạn.
-
Chạy lệnh apt install để thiết lập gói Podman.
sudo apt install podman -y
Quá trình cài đặt Podman bằng lệnh sudo apt install podman -y trên hệ điều hành Linux
Nếu bạn đang sử dụng một bản phân phối không phải Debian, bạn có thể sử dụng yum, nix, aur, hoặc các kho lưu trữ khác có sẵn trong hệ điều hành của mình.
Triển khai container đầu tiên với Podman
Sau khi đã cấu hình Podman trên máy, đã đến lúc triển khai một container. May mắn thay, Podman tương thích với kho lưu trữ image của Docker Hub, và tất cả những gì bạn cần làm là thêm chuỗi docker.io/ trước tên image. Trong hướng dẫn này, chúng ta sẽ triển khai Node-RED, một công cụ tự động hóa nhà thông minh mạnh mẽ.
-
Trong giao diện terminal, chạy lệnh
podman pull
để tải xuống một image container.podman pull image_name podman pull docker.io/nodered/node-red
Màn hình terminal hiển thị lệnh podman pull để tải image Node-RED từ Docker Hub
-
Tương tự như Docker, bạn có thể sử dụng lệnh
podman run
để triển khai một container từ image của nó:podman run -tên_tham_số tên_image
podman run -it -p 1880:1880 -v node_red_data:/data --name mynodered docker.io/nodered/node-red
Thực thi lệnh podman run để triển khai container Node-RED với các tùy chọn cấu hình cổng và volume
-
Cuối cùng, bạn có thể kiểm tra trạng thái các container Podman của mình bằng lệnh
ps
:podman ps
Kiểm tra trạng thái các container Podman đang hoạt động bằng lệnh podman ps trên terminal
Xây dựng môi trường Self-Hosting mạnh mẽ với Podman
Với những kiến thức cơ bản này, bạn đã sẵn sàng làm việc với Podman. Nếu bạn muốn làm việc với các pods, bạn có thể sử dụng lệnh podman create pod
để tạo một pod. Sau đó, bạn có thể chạy các container trong pod đó bằng cách thêm cờ --pod
khi thực thi lệnh podman run
. Vì Podman tương thích với Kubernetes, bạn có thể tận dụng Kubernetes như một nền tảng điều phối container cho các dịch vụ yêu thích của mình.
Lệnh podman container đang được thực thi trên terminal, minh họa cách quản lý container và pod trong Podman
Mặc dù Podman an toàn hơn Docker, nhưng nó lại không dễ tiếp cận bằng đối thủ. Chắc chắn, bạn có thể tận dụng các tiện ích bổ sung như Podman-Compose và Quadlet để tăng cường tiện ích của nó, nhưng Docker Compose vẫn vượt trội hơn khi bạn muốn một phương pháp đơn giản để triển khai các container từ tệp YAML.
Kết luận
Podman mang đến một cách tiếp cận mới mẻ và an toàn hơn cho công nghệ container hóa với kiến trúc không daemon và chế độ rootless mặc định. Khả năng hỗ trợ pods và tương thích với Kubernetes mở ra nhiều tiềm năng cho việc xây dựng các môi trường tự host phức tạp và bảo mật. Mặc dù còn một số hạn chế về mặt dễ sử dụng so với Docker Compose, Podman vẫn là một lựa chọn đáng cân nhắc cho những ai ưu tiên bảo mật và muốn kiểm soát sâu hơn hệ thống container của mình.
Bạn đã từng trải nghiệm Podman chưa? Hãy chia sẻ kinh nghiệm của bạn về nền tảng container hóa này trong phần bình luận bên dưới nhé!