Liên hệProfile
Danh mục

Mục Lục

    Podman là gì? Hướng dẫn sử dụng Podman trong Linux để quản lý container không cần Daemon

    Nguyễn Hưng

    Ngày đăng:

    05/05/2026

    Cập nhật lần cuối:

    05/05/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    Đánh giá bài viết

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    05/05/2026

    Cập nhật lần cuối:

    05/05/2026

    Mục lục

    Trong quá trình quản trị hệ thống, mình đã trực tiếp kiểm chứng khả năng tương thích của Podman khi có thể thay thế hoàn toàn Docker mà không làm gián đoạn các workflow hiện có trên Linux. Những thao tác quản lý container không cần Daemon mà mình chia sẻ dưới đây là bộ giải pháp thực chiến giúp giảm tải tài nguyên hệ thống và đơn giản hóa việc triển khai ứng dụng. Bài viết sẽ đi thẳng vào hướng dẫn kỹ thuật chi tiết, giúp bạn chuyển dịch và vận hành container bằng Podman một cách chuyên nghiệp và hiệu quả.

    Những điểm chính

    Đối với mình, Podman không chỉ là công cụ thay thế Docker mà còn là giải pháp container hóa hiện đại, giúp tăng cường bảo mật và kiểm soát hệ thống tốt hơn trong môi trường Linux. Để giúp bạn hiểu rõ hơn về Podman và cách sử dụng trong thực tế, bài viết dưới đây sẽ cung cấp các thông tin gồm:

    • Khái niệm: Hiểu rõ Podman là công cụ mã nguồn mở chuyên quản lý container và Pod, được Red Hat phát triển như một lựa chọn thay thế tối ưu cho Docker.
    • Lý do sử dụng: Nắm được các lợi ích chính như bảo mật vượt trội, tích hợp mượt mà với Kubernetes và tính linh hoạt cao, giúp đánh giá và lựa chọn Podman để tối ưu hóa quy trình quản lý container.
    • Ưu và nhược điểm: Đánh giá được các ưu và nhược điểm của Podman, giúp cân nhắc giữa yếu tố bảo mật, khả năng tương thích và các giới hạn về Docker Swarm.
    • Các lệnh cơ bản: Nắm vững các lệnh cơ bản tương đương với Docker, giúp bạn nhanh chóng làm quen và áp dụng vào thực tế để quản lý container.
    • Hướng dẫn thực hành: Nắm được các bước thực hành từ tải image, chạy container đến ánh xạ cổng, giúp bạn tự tin quản lý vòng đời container một cách có hệ thống.
    • Cách kiểm tra kết quả: Biết cách xác nhận trạng thái tiến trình, kiểm tra ánh xạ cổng và chứng minh chế độ không cần sudo, giúp bạn đảm bảo hệ thống hoạt động đúng thiết kế.
    • Cách xử lý một số lỗi phổ biến: Nhận biết và khắc phục các lỗi phổ biến trên Podman như command not found, failed to remove one or more containers và port is already allocated, giúp bạn sử dụng công cụ hiệu quả và tự tin hơn.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến Podman.

    Podman là gì?

    Podman là công cụ mã nguồn mở chuyên quản lý container và Pod, được Red Hat phát triển như một lựa chọn thay thế tối ưu cho Docker. Điểm nổi bật nhất nằm ở thiết kế daemonless, không phụ thuộc vào bất kỳ dịch vụ nền nào chạy liên tục như Docker Daemon. Đồng thời, nó loại bỏ nhu cầu quyền root để vận hành, từ đó giảm thiểu đáng kể rủi ro bảo mật trên hệ thống Linux.

    Pod trong Podman đại diện cho một nhóm container chia sẻ chung dữ liệu mạng, lưu trữ lẫn ngữ cảnh thực thi, lấy cảm hứng trực tiếp từ mô hình Pod của Kubernetes, giúp tổ chức ứng dụng phức tạp một cách hiệu quả. Công cụ này tuân thủ nghiêm ngặt tiêu chuẩn OCI (Open Container Initiative), hỗ trợ phát triển, quản lý và triển khai container an toàn, linh hoạt. Đặc biệt, Podman tương thích gần 100% với cú pháp lệnh Docker (bạn chỉ cần thay “docker” bằng “podman”), giúp quản trị viên hệ thống cùng developer chuyển đổi mượt mà mà không gặp trở ngại.

    Podman là công cụ mã nguồn mở chuyên quản lý container và Pod
    Podman là một nền tảng mã nguồn mở dùng để quản lý các container và Pod

    Tại sao nên sử dụng Podman?

    Podman mang lại nhiều lợi ích vượt trội, khiến nó trở thành lựa chọn lý tưởng cho quản trị viên và lập trình viên. Dưới đây là những lý do chính:

    • Bảo mật vượt bậc: Kiến trúc loại bỏ hoàn toàn nhu cầu root cùng daemon nền giúp thu hẹp đáng kể các lỗ hổng tiềm ẩn, tăng cường an toàn cho hệ thống.
    • Hỗ trợ Kubernetes mượt mà: Người dùng dễ dàng xuất tạo file YAML Kubernetes trực tiếp từ pod và container đang hoạt động, rút ngắn quy trình triển khai.
    • Tính linh hoạt cao: Podman vận hành ổn định trên Linux, Windows (qua WSL2) lẫn macOS, phù hợp với đa dạng môi trường phát triển.
    Tại sao nên sử dụng Podman
    Tại sao nên sử dụng Podman

    Ưu và nhược điểm của Podman

    Ưu điểm
    • default icon

      Vận hành độc lập không daemon: Mọi container hoạt động như tiến trình riêng lẻ của user, tiết kiệm tài nguyên hệ thống đồng thời xóa sổ điểm thất bại duy nhất từ daemon trung tâm.

    • default icon

      Chạy mượt mà không đòi root: Đặc quyền root trở thành quá khứ, hạn chế tối đa rủi ro leo thang quyền hạn, lý tưởng cho môi trường đa tenant hoặc bảo mật nghiêm ngặt.

    • default icon

      Tương thích hoàn hảo với Docker CLI: Hầu hết lệnh Docker hoạt động nguyên bản (chỉ đổi tên lệnh), hỗ trợ build từ Dockerfile và khai thác image Docker mà không chỉnh sửa gì.

    • default icon

      Native Pod và liền mạch Kubernetes: Tạo nhóm container chia sẻ tài nguyên giống hệt Pod Kubernetes, đơn giản hóa việc migrate workload lên cụm K8s.

    • default icon

      Tích hợp sâu Systemd: Tự động sinh unit file để quản lý lifecycle container, đảm bảo khởi động tự động cùng hệ thống.

    • default icon

      Hiệu suất tối ưu: Không daemon overhead giúp khởi động nhanh, tiêu thụ ít RAM/CPU, hoàn hảo cho môi trường dense container hoặc tài nguyên eo hẹp.

    Nhược điểm
    • default icon

      Đường cong học ban đầu: Các tính năng như rootless mode, tùy chỉnh storage/network đòi hỏi thời gian làm quen, đặc biệt với user quen Docker.

    • default icon

      Hệ sinh thái chưa phong phú: Ít plugin/tool bên thứ ba hơn Docker, đôi khi khó tìm giải pháp tích hợp sẵn.

    • default icon

      Mạng nâng cao chưa hoàn hảo: Một số kịch bản phức tạp (routing, load balancing) yêu cầu config tay, chưa tự động hóa đầy đủ.

    • default icon

      Tính năng orchestration đang phát triển: High availability và điều phối lớn cần tool ngoài hoặc setup thủ công, chưa mature bằng đối thủ.

    Việc đánh giá Podman cần dựa trên sự cân bằng giữa yêu cầu bảo mật nghiêm ngặt và tính tiện dụng trong vận hành. Dựa trên kinh nghiệm thực tế của mình, ưu thế lớn nhất của Podman là khả năng loại bỏ các lỗ hổng liên quan đến đặc quyền root và sự phụ thuộc vào daemon nền. Tuy nhiên, việc thiếu hụt hỗ trợ cho Docker Swarm và các yêu cầu cấu hình phức tạp hơn khi thiết lập mạng ở chế độ rootless là những rào cản kỹ thuật cần lưu ý.

    Các câu lệnh Podman cơ bản

    Dưới đây là một số câu lệnh Podman cơ bản thường dùng khi làm việc với container, kèm theo lệnh tương đương trong Docker và ghi chú về việc có cần sudo hay không:

    Lệnh podmanTương đương DockerMục đíchYêu cầu sudo
    podman pulldocker pullTải image từ kho lưu trữKhông
    podman imagesdocker imagesLiệt kê các image đã tải vềKhông
    podman rundocker runChạy container từ một imageKhông
    podman psdocker psLiệt kê các container đang chạyKhông
    podman stopdocker stopDừng container đang chạyKhông
    podman rmdocker rmXóa container đã dừngKhông
    podman rmidocker rmiXóa imageKhông
    podman networkdocker networkQuản lý mạng containerCó/Không

    1. Yêu cầu cài đặt Podman

    Hệ thống của bạn phải từ CentOS/RHEL 8 trở lên, Fedora (cài sẵn) hoặc Ubuntu. Trên Debian/Ubuntu thì bạn sử dụng câu lệnh để cài đặt Podman:

    sudo apt install podman

    Trên CentOS/RHEL/Fedora thì bạn áp dụng câu lệnh sau:

    sudo dnf install podman

    2. Tải và liệt kê Image

    Bạn tải Image từ Docker Hub hoặc registry khác, sau đó kiểm tra danh sách Image cục bộ. Lệnh tải Image nhu sau:

    podman pull <tên image>

    Ví dụ: podman pull ubuntu:latest

    Lệnh podman pull ubuntu:latest giúp tải xuống phiên bản image container Ubuntu
    Lệnh podman pull ubuntu:latest giúp tải xuống phiên bản image container Ubuntu

    Giải thích: Lệnh tải phiên bản Ubuntu mới nhất từ kho lưu trữ về máy cục bộ.

    Lệnh để liệt kê Image:

    podman images
    Lệnh podman images giúp liệt kê Image
    Lệnh podman images giúp liệt kê Image

    Giải thích: Podman mặc định truy cập Docker Hub nếu không chỉ định registry khác.

    3. Chạy container cơ bản

    Tiếp theo, bạn khởi chạy container mới từ Image đã tải. Cú pháp lệnh như sau:

    podman run [tùy chọn] <tên image> <lệnh>

    Ví dụ: Chạy container Ubuntu và thực thi lệnh ls / rồi thoát. Lệnh ls như sau podman run ubuntu ls /

    Bạn cần chạy Container Ubuntu và thực thi lệnh ls / rồi thoát
    Bạn cần chạy container Ubuntu và thực thi lệnh ls / rồi thoát

    Ví dụ: Chạy container ở chế độ tương tác và nền. Lệnh chạy như sau podman run -it –name my_shell ubuntu /bin/bash

    Lệnh podman run -it --name my_shell ubuntu /bin/bash giúp chạy Container ở chế độ tương tác và nền
    Lệnh podman run -it –name my_shell ubuntu /bin/bash giúp chạy container ở chế độ tương tác và nền

    Giải thích: Tùy chọn -it (interactive + tty) mở giao diện shell. –name đặt tên cho Container.

    4. Liệt kê và kiểm tra trạng thái container

    Bạn liệt kê và kiểm tra trạng thái container nhằm mục đích xem container đang hoạt động và container đã thoát. Để xem container đang chạy thì bạn cần áp dụng lệnh sau:

    podman ps
    Để liệt kê và kiểm tra trạng thái Container thì bạn cần sử dụng lệnh podman ps
    Để liệt kê và kiểm tra trạng thái container thì bạn cần sử dụng lệnh podman ps

    Để xem tất cả container (kể cả đã thoát) thì bạn áp dụng lệnh:

    podman ps -a
    Để xem tất cả Container (kể cả đã thoát) thì bạn cần sử dụng lệnh podman ps -a
    Để xem tất cả container (kể cả đã thoát) thì bạn cần sử dụng lệnh podman ps -a

    Giải thích: podman ps hiển thị thông tin như CONTAINER ID, IMAGE, STATUS, và PORTS (nếu có).

    5. Port Mapping

    Port Mapping sẽ mở cổng container ra cổng máy chủ Linux (Host). Để thực hiện thì bạn cần sử dụng cú pháp sau:

    podman run -d -p <host_port>:<container_port> <tên image>

    Ví dụ: Chạy web server Nginx (cổng 80) và ánh xạ ra cổng 8080 máy chủ. Lệnh có cú pháp như sau podman run -d -p 8080:80 docker.io/library/nginx

    Bạn có thể chạy một web server Nginx trên cổng 80
    Bạn có thể chạy một web server Nginx trên cổng 80

    Giải thích: Tùy chọn -d (detach) chạy container trong nền. Dịch vụ Nginx truy cập qua cổng 8080 máy chủ.

    6. Dừng và xóa container

    Dừng và xóa container nhằm mục đích quản lý vòng đời container hiệu quả. Để dừng container thì bạn cần áp dụng lệnh sau:

    podman stop <tên container hoặc ID>

    Ví dụ: Bạn có thể dừng Container cụ thể với lệnh podman stop peaceful_stonebraker

    Bạn có thể dừng container bằng lệnh podman stop peaceful_stonebraker
    Bạn có thể dừng container bằng lệnh podman stop peaceful_stonebraker

    Nếu bạn muốn xóa container (chỉ với container đã dừng) thì cần áp dụng câu lệnh:

    podman rm <tên container hoặc ID>

    Ví dụ: Bạn có thể xóa Container với lệnh podman rm eager_kepler my_shell

    Bạn có thể xóa Container bằng lệnh podman rm eager_kepler my_shell
    Bạn có thể xóa container bằng lệnh podman rm eager_kepler my_shell

    Giải thích: podman ps -a -q liệt kê ID tất cả container, sau đó dùng cho podman rm.

    Ngoài ra, bạn cũng có thể xóa tất cả container đã dừng với lệnh:

    podman rm $(podman ps -a -q)
    Bạn có thể xóa tất cả container đã dừng bằng lệnh podman rm $(podman ps -a -q)
    Bạn có thể xóa tất cả container đã dừng bằng lệnh podman rm $(podman ps -a -q)

    7. Xóa Image

    Nếu bạn muốn xóa Image khỏi hệ thống (khi không container nào sử dụng) thì có thể áp dụng cú pháp sau:

    podman rmi <tên image hoặc ID>

    Ví dụ: Bạn có thể xóa Image trên Ubuntu với lệnh podman rmi docker.io/library/ubuntu:latest

    Bạn có thể xóa Image trên Ubuntu bằng lệnh podman rmi docker.io/library/ubuntu:latest
    Bạn có thể xóa Image trên Ubuntu bằng lệnh podman rmi docker.io/library/ubuntu:latest

    Hiệu năng vận hành của Podman nằm ở việc kiểm soát vòng đời container mà không làm gia tăng rủi ro bảo mật cho máy chủ. Một sai sót kỹ thuật thường gặp là người dùng vẫn duy trì thói quen sử dụng sudo khi thực thi lệnh Podman.

    Chiến lược tối ưu là triệt để sử dụng chế độ Rootless, cho phép cô lập hoàn toàn tiến trình ứng dụng khỏi quyền quản trị cao nhất của hệ thống. Việc nắm vững các bước từ Port Mapping đến quản lý Image trên hạ tầng không chỉ giúp tối ưu hóa tài nguyên phần cứng mà còn đảm bảo rằng các lỗ hổng bảo mật tiềm ẩn trong container không thể xâm nhập vào nhân hệ điều hành gốc.

    Cách kiểm tra kết quả trên Podman

    Sau khi khởi chạy, bạn cần thực hiện 3 bước kiểm tra sau để đảm bảo hệ thống hoạt động đúng thiết kế:

    Bước 1: Xác nhận trạng thái tiến trình:

    • Dấu hiệu: Sau lệnh run, hệ thống trả về một chuỗi ID dài.
    • Kiểm tra: Gõ podman ps. Nếu cột Status hiển thị Up, container đã khởi tạo thành công.

    Bước 2: Kiểm tra kết nối và ánh xạ cổng:

    • Mục tiêu: Đảm bảo dữ liệu lưu thông từ máy chủ vào container.
    • Cách làm: Chạy lệnh curl localhost:8080 hoặc truy cập trình duyệt. Nếu nhận được phản hồi (ví dụ: trang chào mừng của Nginx), việc ánh xạ cổng đã thông suốt.

    Bước 3: Kiểm chứng đặc quyền:

    • Mục tiêu: Xác nhận tính năng bảo mật không cần quyền root.
    • Cách làm: Thực hiện toàn bộ quy trình bằng user thường (không dùng sudo). Việc container vẫn hoạt động bình thường chính là bằng chứng tính năng Rootless đã kích hoạt, giúp giảm thiểu rủi ro bảo mật hệ thống.
    Cách kiểm tra kết quả trên Podman
    Cách kiểm tra kết quả trên Podman

    Cách xử lý một số lỗi phổ biến trên Podman

    Bạn có thể khắc phục phổ biến trên Podman như sau:

    • Xử lý lỗi podman: command not found: Nguyên nhân do gói Podman chưa cài đặt. Bạn thực hiện cài đặt theo phần yêu cầu cài đặt.
    • Xử lý lỗi Error: failed to remove one or more containers khi xóa Image: Nguyên nhân do container đang sử dụng Image. Bạn cần chạy lệnh podman ps -a | grep tìm Container, sau đó podman stop và podman rm trước khi xóa Image.
    • Xử lý lỗi Error: port is already allocated khi ánh xạ cổng: Nguyên nhân do cổng Host () đang dùng bởi dịch vụ khác. Bạn chọn cổng Host khác chưa sử dụng.

    Câu hỏi thường gặp

    Podman compose là gì?

    podman compose là lệnh chạy workload dạng Compose (tệp docker-compose.yml) thông qua một công cụ Compose bên ngoài như docker-compose hoặc podman-compose.

    Podman khác Docker ở những điểm chính nào?

    Podman không cần daemon nền, chạy container trực tiếp dưới quyền người dùng, giảm rủi ro bảo mật. Docker dùng kiến trúc client–daemon, trong khi Podman hoạt động theo kiểu daemonless, tương thích CLI gần như hoàn toàn với Docker nhưng không hỗ trợ Docker Swarm.

    Podman Desktop là công cụ gì?

    Podman Desktop là công cụ giao diện đồ họa mã nguồn mở, cho phép quản lý Podman và các engine container khác từ một giao diện duy nhất. Bạn có thể build image từ Dockerfile/Containerfile, pull/push image, chạy/stop container, xem log, mở terminal trong container và triển khai lên Kubernetes.

    Podman có dùng được lệnh Docker không?

    Có, Podman tương thích CLI với Docker, bạn có thể thay docker bằng podman trong hầu hết lệnh như podman run, podman build, podman ps, podman images,… Podman cũng build được từ Dockerfile và chạy được image từ Docker Hub.

    Podman là một công cụ quản lý container hiện đại, ưu tiên bảo mật với kiến trúc không dùng daemon và hỗ trợ chạy rootless, mang lại giải pháp an toàn, linh hoạt cho cả nhà phát triển lẫn quản trị hệ thống. Nhờ khả năng tương thích rất cao với Docker CLI, bạn có thể gần như giữ nguyên quy trình và lệnh quen thuộc, giúp quá trình chuyển đổi sang Podman diễn ra mượt mà mà không phải thay đổi workflow hiện tại. Cảm ơn bạn đã theo dõi bài viết!

    Đánh giá bài viết
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Ansible là gì? Hướng dẫn sử dụng Ansible trên Linux chi tiết cho người mới
    Ansible là gì? Hướng dẫn sử dụng Ansible trên Linux chi tiết cho người mới

    Việc quản trị thủ công từng server đơn lẻ sẽ trở thành rào cản lớn khi hệ thống mở rộng và Ansible chính là giải pháp mình đã áp dụng để đồng bộ hóa cấu hình trên hàng trăm node chỉ với một câu lệnh duy nhất. Những hướng dẫn trong bài viết này không…

    05/05/2026

    Cách sử dụng lệnh lsusb trong Linux để kiểm tra thiết bị USB chi tiết
    Cách sử dụng lệnh lsusb trong Linux để kiểm tra thiết bị USB chi tiết

    lsusb là lệnh dùng để liệt kê các thiết bị USB và bộ điều khiển USB đang được hệ thống nhận diện. Bài viết này được mình đúc kết từ kinh nghiệm xử lý sự cố thực tế cho hàng ngàn máy chủ Linux để hướng dẫn bạn cách sử dụng lsusb với các tùy…

    05/05/2026

    Kubectl là gì? Hướng dẫn quản lý Kubernetes thông qua các lệnh kubectl trên Linux
    Kubectl là gì? Hướng dẫn quản lý Kubernetes thông qua các lệnh kubectl trên Linux

    Kubectl là công cụ dòng lệnh chính thức để giao tiếp và quản lý cụm Kubernetes. Thực tế vận hành hệ thống cho thấy, việc quản trị một cluster phức tạp không thể tách rời khả năng tương tác trực tiếp với API Server. Từ kinh nghiệm triển khai hạ tầng, mình nhận thấy Kubectl…

    05/05/2026

    Lệnh perf trong Linux là gì? Những lệnh perf cơ bản
    Lệnh perf trong Linux là gì? Những lệnh perf cơ bản

    Trong những lần xử lý sự cố server bị treo cứng mà không rõ nguyên nhân, perf chính là phương án giúp mình soi chiếu chính xác từng chu kỳ CPU để tìm ra hàm xử lý đang gây nghẽn. Việc đọc hiểu các thông số từ công cụ này đã giúp mình tối ưu…

    05/05/2026

    linux

    lenh

    text