Sejak versi 4.4, podman memperkenalkan “quadlet”. Jika Anda terbiasa menggunakan perintah “podman generate systemd” untuk membuat file unit servis systemd untuk menjalankan container sebagai servis systemd, perintah tersebut sudah tidak dianjurkan lagi walau masih bisa dipakai. Sebagai gantinya, dianjurkan untuk membuat dan menggunakan file quadlet.

Apa itu quadlet? Link to heading

Quadlet adalah sebuah tool yang dijadikan standar untuk menjalankan container podman secara optimal di lingkungan systemd. Dengan quadlet, Kita mendefinisikan bagaimana menjalankan container dalam format yang sangat mirip seperti file konfigurasi unit systemd biasa.

Hal ini memungkinkan deklarasi container lebih mudah dibaca dan tentu saja lebih mudah dimodifikasi.

Contoh file quadlet Link to heading

# mariadb.container
[Unit]
After=network-online.target

[Container]
ContainerName=mariadb
AutoUpdate=registry
Image=docker.io/mariadb:10.11
Timezone=Asia/Jakarta
PublishPort=33060:3306
SeccompProfile=unconfined
Environment=MARIADB_AUTO_UPGRADE=1
Volume=mariadb-datadir:/var/lib/mysql
Volume=/etc/mysql/conf.d:/etc/mysql/conf.d:ro

[Service]
Restart=always

[Install]
WantedBy=default.target

Terlihat pada contoh di atas, format file quadlet serupa dengan format file unit systemd, tetapi terdapat tambahan bagian “[Container]” untuk menyatakan konfigurasi container yang akan dijalankan.

Bagian “[Unit]” layaknya file unit systemd, biasanya di bagian itu kita sertakan informasi kapan container akan dijalankan. Pada contoh di atas dinyatakan bahwa container akan dijalankan setelah “network-online.target”.

Di [Service] pada contoh di atas kita mendeklarasikan bahwa container akan selalu di-restart, kecuali jika memang container tersebut dimatikan secara manual dengan menggunakan perintah “systemctl stop mariadb”. Hal ini dilakukan dengan maksud agar sistem secara otomatis akan menjalankan kembali container ini jika container ini mati, misal karena crash.

“WantedBy=default.target” pada bagian [Install] juga seperti pada file unit systemd biasanya, disini untuk menyatakan kapan container akan secara otomatis dijalankan. Pada contoh di atas, container akan berjalan secara otomatis ketika sistem selesai boot dan mencapai target default systemd.

Dimana Kita menaruh file quadlet? Link to heading

Untuk rootful mode container, letakkan file quadlet di direktori “/etc/containers/systemd/”.

Untuk rootless mode container, Anda bisa meletakkan file quadlet di direktori diantaranya:

  • “$XDG_RUNTIME_DIR/containers/systemd/”, contoh: “/run/user/$UID/containers/systemd/”
  • “/etc/containers/systemd/users/$UID/”
  • “$XDG_CONFIG_HOME/containers/systemd/”, contoh: “~/.config/containers/systemd/”. Penggunaan direktori ini memungkinkan user bisa melakukan stop/start servis container tersebut.

Catatan: Sesuaikan $UID dengan UID user yang Anda maksudkan.

Keuntungan menggunakan quadlet Link to heading

  • Manajemen container menjadi lebih simpel karena membuat podman lebih terintegrasi dengan systemd.
  • File quadlet membuat deklarasi container menjadi lebih sederhana, mengikuti pola file unit systemd dengan tambahan baris yang juga serupa dengan definisi-definisi pada podman. File ini lebih mudah dibaca dan di-edit dibanding dengan mengedit file unit systemd hasil generasi dari “podman generate systemd”. Poin inilah yang paling Kami sukai dan membuat Kami mengikuti rekomendasi standar ini dan beralih dari penggunaan “podman generate systemd”.
  • File quadlet mendukung berbagai tipe file unit, meliputi: .container, .kube, .network, .volume, .pod.

Podlet Link to heading

Jika Anda belum terbiasa dengan sintaks-sintaks pada file quadlet, Anda dapat menggunakan tool pembantu: podlet.

Tool ini cukup membantu di awal perkenalan dengan format file quadlet, akan tetapi Kami yakin, setelah beberapa saat Anda akan mahir membuat file quadlet tanpa bantuan tool ini.