- Quadlet เป็นเครื่องมือที่ช่วยให้สามารถรันคอนเทนเนอร์ Podman เป็นบริการของ systemd ได้ ซึ่งมีประโยชน์สำหรับการสตาร์ทคอนเทนเนอร์อัตโนมัติในเบื้องหลังหลังจากเซิร์ฟเวอร์รีบูต
- เดิมทีใช้คำสั่ง
podman generate systemd แต่ปัจจุบันแนะนำให้ย้ายมาใช้ Quadlet
วิธีเดิม
- ต้องสร้างคอนเทนเนอร์ จากนั้นสร้างไฟล์บริการ systemd แล้วย้ายไฟล์นั้นไปยังไดเรกทอรีที่เหมาะสมเพื่อเปิดใช้งานบริการ
- กระบวนการนี้มีคำสั่งที่ยาวและซ้ำซาก อีกทั้งยังไม่สะดวกเพราะต้องแก้ไขไฟล์ด้วยตนเอง
ปัญหา
- วิธีเดิมมีความซับซ้อนและขาดความยืดหยุ่น
- เมื่อเทียบกับความสะดวกของ Docker Compose แล้ว ยังต้องทำงานด้วยตนเองหลายอย่าง
Quadlet
- เมื่อใช้ Quadlet สามารถสร้างไฟล์
.container เพื่อจัดการคอนเทนเนอร์ได้
- ผ่านส่วน
[Container] สามารถตั้งค่าอิมเมจ พอร์ต วอลุ่ม และตัวแปรแวดล้อมได้
- ในส่วน
[Service] สามารถตั้งค่านโยบายการรีสตาร์ทคอนเทนเนอร์ได้
- ในส่วน
[Install] สามารถตั้งค่าให้เริ่มทำงานอัตโนมัติเมื่อบูตได้
จุดที่ดีกว่า
- สามารถจัดการการตั้งค่าทั้งหมดได้ในไฟล์เดียว และใช้ตัวเลือกทั้งหมดของ systemd ได้
- การเขียนไฟล์คอนฟิกง่ายกว่าการเขียนสคริปต์
- สามารถจัดการ dependency ได้ง่าย
Dependency
- หากคอนเทนเนอร์แอปต้องพึ่งพาคอนเทนเนอร์ฐานข้อมูล สามารถตั้งค่า dependency ได้ในส่วน
[Unit] ด้วยตัวเลือก Requires และ After
ไฟล์จะเยอะเกินไปไหม?
- การแยกเป็นหลายไฟล์อาจช่วยลดความซับซ้อนได้
- สามารถจัดกลุ่มไฟล์ที่เกี่ยวข้องเพื่อให้บริหารจัดการได้ง่าย
การอัปเดตอิมเมจ
- หากใช้ตัวเลือก
AutoUpdate=registry จะสามารถอัปเดตอิมเมจและรีสตาร์ทคอนเทนเนอร์ได้ด้วยคำสั่ง podman auto-update
- การใช้แท็ก
latest อาจมีความเสี่ยง จึงแนะนำให้ใช้แท็กเวอร์ชันที่เฉพาะเจาะจง
เกี่ยวกับ podman-compose
podman-compose เป็นสคริปต์ที่แปลงไฟล์ Compose ให้เป็น Podman และ systemd แต่ไม่เหมาะจะใช้เป็นทางเลือกระยะยาว
- Quadlet สอดคล้องกับการออกแบบแบบไม่มี daemon ของ Podman มากกว่า
ข้อมูลเพิ่มเติม
- หากต้องการความเข้าใจ Quadlet ให้ลึกขึ้น แนะนำให้อ่านหน้าคู่มือ
podman-systemd.unit
- Quadlet ไม่ได้จัดการแค่คอนเทนเนอร์เท่านั้น แต่ยังจัดการ pod, network และ volume ได้ด้วย
- หากยังไม่คุ้นเคยกับการเขียนไฟล์ยูนิตของ systemd ควรดูหน้าคู่มือ
systemd.unit และ systemd.service เพิ่มเติม
podlet เป็นเครื่องมือที่ช่วยสร้างไฟล์ Quadlet จากคำสั่ง Podman หรือไฟล์ Compose ได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
Quadlet เป็นทางเลือกแทน Docker Compose ที่มีประโยชน์สำหรับ "รันคอนเทนเนอร์ที่พึ่งพากันและกันในสภาพแวดล้อมที่คล้าย production" แต่มีประโยชน์น้อยกว่าสำหรับสภาพแวดล้อมการพัฒนา
~/.config/containers/systemdจึงแยกออกจากโปรเจ็กต์ได้ยากหลังจากได้รู้จัก Quadlet ก็ได้สร้างโฮมแล็บโดยอิงกับ Atomic OS และ rootless Quadlet และขอแนะนำอย่างมาก
Quadlet เป็นหนึ่งในเครื่องมือที่ดีที่สุดจากฝั่ง Podman และแนะนำสำหรับผู้ที่สนใจงานแบบคอนเทนเนอร์
หลายคนยังลังเลที่จะย้ายจาก Docker ไป Podman เพราะความสะดวกของ Docker Compose
มีการกล่าวถึงว่า Podman-Compose "ไม่ได้รับการดูแลรักษา" แต่ Podlet ก็อยู่ในสภาพคล้ายกัน
ความที่ upstream ของ Podman ไม่มี repository สำหรับ Debian/Ubuntu ทำให้ไม่สะดวก
ได้เริ่มรันคอนเทนเนอร์ Podman ภายใต้ systemd/quadlet โดยใช้ openSUSE MicroOS และตอนนี้พอใจกับการตั้งค่าปัจจุบัน
ชอบการผสานรวมระหว่าง systemd กับ Podman
น่าสนใจที่ Quadlet ขึ้นมาหน้าแรกของ Hacker News
Quadlet ทำให้สามารถใช้คอนเทนเนอร์เหมือน system service ทั่วไปได้