2 điểm bởi GN⁺ 2025-03-25 | 1 bình luận | Chia sẻ qua WhatsApp
  • Quadlet là công cụ cho phép chạy container Podman dưới dạng dịch vụ systemd. Điều này hữu ích để tự động khởi động container trong nền sau khi máy chủ khởi động lại.
  • Trước đây người ta dùng lệnh podman generate systemd, nhưng hiện nay nên chuyển sang Quadlet.

Cách cũ

  • Cần tạo container, tạo tệp dịch vụ systemd, sau đó di chuyển tệp đó vào thư mục phù hợp rồi kích hoạt dịch vụ.
  • Quy trình này có lệnh dài, lặp đi lặp lại và bất tiện vì phải chỉnh sửa tệp thủ công.

Vấn đề

  • Cách cũ phức tạp và thiếu linh hoạt.
  • So với sự tiện lợi của Docker Compose, người dùng phải làm thủ công khá nhiều việc.

Quadlet

  • Với Quadlet, bạn có thể tạo tệp .container để quản lý container.
  • Thông qua phần [Container], có thể cấu hình image, cổng, volume và biến môi trường.
  • Trong phần [Service], có thể thiết lập chính sách khởi động lại container.
  • Trong phần [Install], có thể thiết lập tự động khởi động khi boot.

Điểm tốt hơn

  • Có thể quản lý mọi cấu hình trong một tệp duy nhất và sử dụng toàn bộ tùy chọn của systemd.
  • Viết tệp cấu hình dễ hơn viết script.
  • Có thể quản lý phụ thuộc một cách dễ dàng.

Phụ thuộc

  • Nếu container ứng dụng phụ thuộc vào container cơ sở dữ liệu, có thể thiết lập phụ thuộc bằng các tùy chọn RequiresAfter trong phần [Unit].

Có quá nhiều tệp không?

  • Việc chia thành nhiều tệp có thể giúp giảm độ phức tạp.
  • Có thể nhóm các tệp liên quan lại để quản lý.

Cập nhật image

  • Dùng tùy chọn AutoUpdate=registry sẽ cho phép cập nhật image và khởi động lại container bằng lệnh podman auto-update.
  • Việc dùng thẻ latest có thể rủi ro, nên khuyến nghị dùng thẻ phiên bản cụ thể.

Về podman-compose

  • podman-compose là script chuyển đổi tệp Compose sang Podman và systemd, nhưng không phù hợp như một giải pháp dài hạn.
  • Quadlet phù hợp hơn với thiết kế không daemon của Podman.

Tài liệu bổ sung

  • Để hiểu sâu hơn về Quadlet, nên đọc trang hướng dẫn podman-systemd.unit.
  • Quadlet không chỉ quản lý container mà còn có thể quản lý pod, network và volume.
  • Nếu chưa quen viết tệp unit của systemd, hãy tham khảo thêm các trang hướng dẫn systemd.unitsystemd.service.
  • podlet là công cụ có thể hỗ trợ tạo tệp Quadlet từ lệnh Podman hoặc tệp Compose.

1 bình luận

 
GN⁺ 2025-03-25
Ý kiến Hacker News
  • Quadlet là một lựa chọn thay thế cho Docker Compose, hữu ích để "chạy các container phụ thuộc lẫn nhau trong môi trường tương tự môi trường production". Tuy nhiên, nó kém hữu ích hơn trong môi trường phát triển

    • Docker Compose giúp quản lý dễ dàng các phụ thuộc như database, Redis, OpenSearch, v.v.
    • Quadlet yêu cầu đặt file trong ~/.config/containers/systemd, nên khó tách biệt với từng project
    • Nhiều nhà phát triển vẫn dùng Docker, và nếu muốn dùng Podman thì phải tự thêm cấu hình thủ công
    • Cần có một giải pháp thay thế Docker Compose cho mục đích phát triển, nhưng Quadlet không phù hợp
  • Sau khi biết đến Quadlet, có người đã xây dựng homelab dựa trên Atomic OS và Quadlet rootless, và rất khuyến nghị cách này

    • Có thể dùng systemd socket activation để tự động kích hoạt Traefik
    • Đây là cách duy nhất để giữ lại source IP trong cấu hình rootless
  • Quadlet là một trong những công cụ tốt nhất đến từ Podman và đáng giới thiệu cho những ai quan tâm đến công việc dựa trên container

    • Có thể xử lý container như các dịch vụ hệ thống thông thường nên rất tiện
    • Dùng Quadlet như một lựa chọn thay thế Docker có thể tạo ra cấu hình gọn gàng hơn
    • Trong môi trường phát triển cục bộ, nó không phải là lựa chọn thay thế cho Docker Compose, và team Podman cũng không quá quan tâm đến việc đó
  • Nhiều người vẫn ngần ngại chuyển từ Docker sang Podman vì sự tiện lợi của Docker Compose

    • Quadlet giúp có thể dùng Podman như một giải pháp thay thế cho Docker Compose
    • Sẽ không còn nhớ Docker nữa, đồng thời có thể tận hưởng tính bảo mật của việc chạy container rootless
  • Có đề cập rằng Podman-Compose là "không còn được duy trì", nhưng Podlet cũng ở tình trạng tương tự

    • Podlet không hỗ trợ nhiều tính năng của Docker Compose và không hỗ trợ chồng nhiều file yaml
  • Việc upstream của Podman không cung cấp repository cho Debian/Ubuntu gây bất tiện

    • Vì vậy đã quay lại dùng Docker Compose
  • Có người đã dùng openSUSE MicroOS để chạy container Podman dưới systemd/quadlet và hiện hài lòng với cấu hình này

    • Podman Compose bất tiện khi sử dụng, và Quadlet là lựa chọn tốt hơn
  • Có người thích sự tích hợp giữa systemd và Podman

    • Docker Compose vẫn rất cạnh tranh, còn Quadlet có thể làm thư mục project trở nên phức tạp
  • Việc Quadlet xuất hiện trên trang nhất Hacker News là điều thú vị

    • Dùng Kubernetes YAML nên có tính di động cao
  • Quadlet cho phép sử dụng container như các dịch vụ hệ thống thông thường

    • UX của container rootless không thật sự phù hợp với khái niệm này
    • Mong rằng có thể chạy Quadlet rootless trong một system session