1 điểm bởi GN⁺ 4 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp
  • Podman v6.0.0 là một bản phát hành lớn nhằm hoàn thiện trải nghiệm quản lý container, đồng thời bao gồm hiện đại hóa hạ tầng cốt lõi cùng các cải tiến về bảo mật và khả năng sử dụng
  • Mạng chuyển từ trọng tâm slirp4netns·iptables sang nền tảng Netavark·Pasta·nftables để giảm gánh nặng bảo trì và chuẩn bị cho việc mở rộng tính năng tiếp theo
  • Tính năng thử nghiệm Pesto rootless port forwarding hỗ trợ giữ đúng source IP cho container rootless trên mạng tùy chỉnh
  • Podman Machine cải thiện khả năng sử dụng với nhiều nhà cung cấp VM, đồng thời cho phép giữ môi trường VM luôn cập nhật bằng podman machine os update
  • Quadlet, xử lý tệp cấu hình, khả năng tương thích Docker API và đầu ra lệnh cũng được tinh chỉnh, giúp việc quản lý nhiều người dùng và chuyển từ Docker sang dễ dàng hơn

Những thay đổi trong Podman v6.0.0

  • Có thể xem bản phát hành mới nhất tại trang GitHub Releases, và dự kiến cũng sẽ sớm được phân phối qua trình quản lý gói
  • Hiện đại hóa mạng

    • Chuyển từ slirp4netns và iptables sang Netavark, Pasta và nftables
    • Stack mạng được sắp xếp lại giúp đơn giản hóa bảo trì và tạo nền tảng cho việc bổ sung tính năng trong tương lai
    • Hỗ trợ thử nghiệm Pesto rootless port forwarding cho phép giữ đúng source IP trong container rootless trên mạng tùy chỉnh
  • Cải tiến Podman Machine

    • Khả năng sử dụng được cải thiện để xử lý mượt mà hơn với nhiều nhà cung cấp VM
    • Có thể giữ môi trường VM luôn cập nhật bằng lệnh podman machine os update
    • Các cải tiến bổ sung liên quan sẽ được đề cập chi tiết hơn trong một bài viết riêng trong tương lai
  • Mở rộng Quadlet

    • Đã bổ sung hỗ trợ REST API
    • Cải thiện việc theo dõi các tệp liên quan để quản lý dễ hơn
    • Chức năng của unit .volume được mở rộng
    • Bao gồm thêm các đường dẫn tìm kiếm để giúp việc đóng gói phân phối dễ dàng hơn

Cấu hình và khả năng tương thích Docker

  • Cách xử lý tệp cấu hình đã thay đổi, giúp quản trị viên quản lý môi trường nhiều người dùng mượt mà và đáng tin cậy hơn
  • Khả năng tương thích Docker cũng được cải thiện
    • Hỗ trợ Docker API đã được cập nhật
    • Đầu ra lệnh được tinh chỉnh để việc chuyển từ Docker sang Podman trở nên dễ dàng hơn
  • Danh sách thay đổi đầy đủ được tổng hợp trong Podman v6.0.0 release notes

2 bình luận

 

Tôi định chuyển sang khi podman compose đủ dùng, nhưng thật sự không biết đến bao giờ nó mới đủ dùng.
Dạo này tôi nghĩ việc chạy trực tiếp bằng docker run chỉ còn dành cho container tạm thời hoặc chạy thử nghiệm; vì vậy việc hỗ trợ compose không tốt là một điểm yếu lớn.
Nếu cần cấu hình dài dòng và quản lý chặt chẽ thì dùng luôn k8s còn hơn.
Trong thời đại năm 2026 này, sức hấp dẫn của docker hay podman là có thể định nghĩa toàn bộ stack mà một ứng dụng sử dụng chỉ bằng một file cấu hình yml đơn giản, không cần nhiều định nghĩa resource như của k8s.
Nếu muốn nhấn mạnh khả năng tương thích với k8s thì dùng các bản triển khai k8s nhẹ chạy cục bộ như k3s, minikube hay microk8s sẽ tốt hơn nhiều.
Tôi không nghĩ rootless mới là vấn đề.

 
Các ý kiến trên Hacker News
  • Không hiểu vì sao Docker vẫn phổ biến hơn Podman rất nhiều. Nếu chỉ nhìn vào phần triển khai thì Podman rõ ràng tốt hơn, và tính năng mạng mới cũng là một cải tiến đáng mừng

    • Lý do chính có lẽ là việc triển khai hơi rườm rà hơn và có nhiều bước rời rạc hơn. Đặc biệt nếu muốn đi theo hướng rootless thì càng vậy, mà thực ra nên làm như thế
      Với những người không ưu tiên Linux, chẳng hạn một lập trình viên mới học container hóa ứng dụng, việc phải xử lý file unit của systemd hoặc cấu hình kubelet, tạo tài khoản dịch vụ cục bộ chuyên dụng, rồi còn phải nhớ bật linger, trông đáng ngại hơn khá nhiều so với cài Docker, tạo file docker compose và bấm “start”
      Tôi hiểu vì sao họ chọn cách tiếp cận này, nhưng nó khá thô và không thân thiện
    • fuse-overlayfs chậm thấy rõ so với cấu hình overlayfs của Docker. Có thể có cách cấu hình lại, nhưng gần đây tôi chưa kiểm tra
      Khi build ghostty bằng Zig, hình như nó bị lỗi “unknown file” mơ hồ trên Podman, và hóa ra là vì fuse-overlayfs không hỗ trợ một số thuộc tính mà nó đang cố kiểm tra
      Mỗi lần định chuyển sang lại bị những vấn đề nhỏ ngẫu nhiên như thế này cản trở. Tôi vẫn dùng cho các trường hợp đơn giản
    • Lần cuối tôi kiểm tra, podman compose chỉ giống docker compose ở bề ngoài. Những thứ như inotify bên Podman dường như cũng hay hỏng ngẫu nhiên
      Tôi muốn khuyến nghị Podman, nhưng khả năng tương thích với docker compose không tốt, và nếu thiếu inotify trên volume thì trải nghiệm lập trình viên quá có vấn đề
    • Tên thương hiệu mạnh hơn có lẽ cũng là một lý do. Trên macOS, Docker Desktop trực quan hơn. Tuy nhiên gần đây nó lỗi rất thường xuyên, việc mount file hoặc dọn các quy tắc mạng thất bại ngẫu nhiên, hoặc đột nhiên trở nên cực kỳ chậm khiến phải khởi động lại VM
      Podman trên macOS có cảm giác kém hoàn thiện hơn nhiều, và OrbStack là lựa chọn tốt hơn hẳn
      Tôi chỉ dùng Podman trên Linux, ở đó thì nó rất nhanh. Dù vậy, phần lớn tính năng có vẻ được định hướng để kết hợp với systemd nhằm thay thế Kubernetes, còn hỗ trợ docker compose thì không ổn định và TUI/UX cũng thua bản gốc
    • Tôi đã từ bỏ Podman vì những lý do nhỏ nhặt. Một lý do là họ quyết định xử lý SELinux khác với Docker, nên trên hệ thống CentOS mặc định cần phải thay đổi nhãn bảo mật SELinux. Điều này không thể chấp nhận để áp dụng
      Vấn đề khác là những khác biệt nhỏ so với Docker, đến mức gói Docker compose có sẵn không chạy nguyên trạng được. Chuyển sang Docker thì chạy ngay và tôi có thể tiếp tục công việc trong ngày, nên tôi không muốn tốn thời gian debug chuyện đó
  • Sau khi Docker Desktop lại bắt đầu ngốn lượng bộ nhớ khổng lồ một cách ngẫu nhiên, tôi đã chuyển sang Podman, và thực sự nó dễ đến mức chỉ cần cài xong rồi trỏ tới docker-compose.yml
    Không cần thay đổi gì cả, và giờ cũng không cần giữ daemon chạy liên tục nữa. Một phần mềm tuyệt vời

    • colima tốt hơn Docker Desktop, và Orbstack còn tốt hơn colima. Sau đó tôi phát hiện smolvm microVM của https://smolmachines.com's
    • Vì mấy trò AI nhảm nhí của Docker mà cuối cùng tôi thấy quá giới hạn và thử chuyển sang Podman, nhưng gặp vài vấn đề tương thích. Chuyện đó cách đây vài tháng nên tôi không nhớ chi tiết
      Vì vậy tôi đã thử Rancher Desktop, và ngoại trừ việc cứ quên tên nó, thì nó hoạt động ổn. Đây là một lựa chọn đơn giản khác cho ai cần
  • Tôi thật sự thích Quadlet. Trong vài năm, tôi đã host container rootless bằng Hetzner, Ansible, SystemD, RockyLinux mà không gặp vấn đề gì, và đã tách cấu hình đó thành một kho template
    [1] https://github.com/Mati365/hetzner-podman-bunjs-deploy

    • Tôi chuyển home server từ k3s sang quadlet thì mức tiêu thụ điện giảm 8%
  • Muốn nghe kinh nghiệm chuyển từ Docker sang Podman
    Vì trong cấu hình homelab/tự động hóa có nhiều file compose nên đó là điều đáng lo nhất

    • Khoảng 15 tháng trước tôi đã chuyển từ Docker sang Podman và không có ý định quay lại nữa. Cá nhân tôi thấy quadlet, tức tích hợp systemd, thực sự rất hay; nó giúp giám sát các nhóm dịch vụ đang chạy dễ hơn nhiều, dù là service systemd thông thường hay container
      Chạy rootless cũng rất trực quan, và Podman rất nhanh. Cá nhân tôi không nhớ docker compose lắm, nhưng tôi hiểu việc thiếu docker compose có thể là vấn đề chí mạng với người khác. Tôi chưa từng dùng plugin compose của Podman
    • Tôi đã chuyển một file docker compose khổng lồ trong homelab sang podman quadlet. Theo tôi nhớ, khi chuyển vài dịch vụ đầu tiên thì mất chút thời gian vì tài liệu và ví dụ về quadlet không nhiều bằng file compose, nhưng sau đó thì rất dễ. Rất khuyến nghị
      Vấn đề duy nhất là việc xác thực. Không có lệnh tích hợp tiện lợi để kiểm tra file quadlet, và systemd cũng không cảnh báo khi tạo thất bại. Cần chạy --dry-run trước, hoặc tạo alias phù hợp cho toàn bộ lệnh, hoặc kiểm tra lỗi trong journal
    • Tôi đã chuyển từ vài năm trước, trước bản 5.0, và không ngoảnh lại. Với file compose thì đáng cân nhắc dùng quadlet
      Để chuyển nhanh, có thể dùng trực tiếp podman-compose, hoặc cấu hình docker compose để trỏ tới socket của Podman[0]
      Cũng có podlet[1], công cụ chuyển file compose sang quadlet native. Hầu hết các file compose đơn giản hoặc phức tạp vừa phải đều được xử lý khá tốt và chạy ngay. Cũng có ý tưởng biến nó thành dạng thư viện để các công cụ khác có thể chuyển file compose sang quadlet một cách trong suốt, nên tôi kỳ vọng sẽ có thêm các công cụ tương tự trong tương lai
      Nếu đã quen dù chỉ một chút với file unit của systemd thì tự viết file Quadlet cũng không khó. Phần lớn tham số của docker run hoặc podman run có đối ứng trực tiếp trong quadlet, nên một khi quen với định dạng INI thay vì YAML, việc nhìn file compose rồi tạo quadlet tương đương khá dễ
      [0] https://www.redhat.com/en/blog/podman-docker-compose
      [1] https://github.com/containers/podlet
    • Khoảng 1–2 năm trước tôi đã chuyển toàn bộ sang Podman rootless. Một số container gặp vấn đề quyền khi đọc dữ liệu cũ, nguyên nhân là chúng được chạy bằng UID khác
      Vấn đề thực tế tôi gặp chỉ có vậy, và nếu chuyển từ Docker chạy quyền root sang Docker rootless thì cũng sẽ gặp cùng vấn đề. Hoàn toàn không hối hận và tuyệt đối không có ý định quay lại
    • Tôi biết ơn Podman ngang với git
      Podman đã trưởng thành và hợp lý. Nếu container của ai đó phụ thuộc vào quyền su, tôi sẽ trách người đó chứ không trách Podman
  • Điều tôi không thích ở Podman là nó giả vờ tương thích Docker, nhưng lại có những khác biệt nhỏ về sau sẽ quay lại cắn bạn. Người dùng một dự án dựa trên Docker thử chạy bằng Podman rồi cuối cùng lại đến than phiền với phía dự án

    • Phần lớn khác biệt không đến từ socket API, hành vi logic hay khác biệt dòng lệnh. Chúng chủ yếu phát sinh từ việc Docker giả định rằng nó chạy với quyền root, trong khi Podman mặc định không như vậy
      Vì thế việc sửa lỗi không tương thích Podman/Docker phần lớn là xử lý giả định đó. Chẳng hạn thêm vài flag vào lệnh Podman để thay đổi cách ánh xạ user namespace giữa container và host
    • Tôi đã dùng Podman trên Mac và Linux trong 3 năm, và tiếc là vấn đề này luôn đúng. Tôi sẵn sàng kiên trì tìm nguyên nhân gốc và báo bug, nhưng với nhiều người thì nó chỉ trông như bị hỏng
      Gần đây nhất, Netavark có hành vi nhận broadcast traffic trên port đã publish không khớp với Docker
    • Đúng vậy. Vì điều này mà tôi đã né Podman trong nhiều năm. Giờ tôi thấy nó có những ý tưởng thông minh, và nếu dùng RHEL thì đó là lựa chọn hiển nhiên, nhưng cần nói thẳng hơn rằng sẽ phải thích nghi
      Đặc biệt là khi chuyển từ Docker chạy quyền root sang Podman rootless
  • Tò mò không biết Podman dạo này thế nào. Trên macOS tôi đang dùng OrbStack và có vẻ nhanh hơn nhiều. Nếu macOS 27 bổ sung Linux container dựa trên microVM, native hơn và hiệu năng tốt hơn giống WSL, không biết cục diện sẽ ra sao

    • Tôi không rõ về macOS, nhưng trên Linux thì nó khớp mượt với nhu cầu của tôi. Một điểm cần lưu ý là Podman Compose dùng docker-compose làm provider mặc định
      Tôi chưa thử provider podman-compose, và tên của nó hơi dễ nhầm với Podman Compose. Podman Compose là lớp trừu tượng cấp cao hơn nằm trên docker-compose hoặc podman-compose. Nếu cần, Podman cũng có thể chạy container thông qua Docker engine
    • Cùng câu hỏi và cùng tình huống. Tôi đã thử trên MacOS, và để hiểu vấn đề đầu tiên gặp phải, tôi phải đào sâu vào các diễn đàn Redhat. Chuyển sang OrbStack là lựa chọn hiển nhiên, nhưng xét về tính năng thì có những đánh đổi rõ ràng
  • Quadletcontainer rootless là hai lý do lớn để chuyển từ Docker sang Podman

    • Rootless là lý do tôi chuyển sang Podman vài năm trước. Thực sự mượt mà, và giờ tôi không còn phải lo về các vấn đề quyền mơ hồ hay lỗi service nữa
  • Podman thì tốt, nhưng tôi không hiểu tại sao màu chữ xám kia lại như vậy. Trông không đẹp, tỷ lệ tương phản 4.96:1 nên khó đọc, và còn không đạt mức WCAG AAA

  • Tôi đã vận hành home server bằng podman + quadlets khoảng 2 năm, và trong ghi chú phát hành thấy vài điểm đáng chú ý
    podman quadlet list được thêm ở v5.6.0, dùng để liệt kê quadlet và các container của chúng
    podman system migrate --migrate-db là flag được thêm ở v5.8.0. Trước đây tôi từng thấy cảnh báo ngừng hỗ trợ bolt DB nhưng không có công cụ để migrate sang sqlite, giờ thì đã có. Hoặc nếu nâng lên podman 6.0.0 thì việc này sẽ được xử lý tự động

  • Tôi muốn biết kinh nghiệm dùng Podman để build image cho runtime CRI chứ không phải Docker
    Nếu build image bằng Podman thì có chạy được trên cri-o, Docker và nhiều runtime khác không?
    docker build cần sudo nên khá phiền trong workflow dựa trên agent, nên tôi đang cân nhắc build image bằng Podman rootless