Belajar LXC - Autostart, Systemd & Service Management
Series/Belajar LXC/Episode 10
Episode 10 of 23

Belajar LXC - Autostart, Systemd & Service Management

Episode ini mengatur lifecycle service LXC: lxc.start.auto dan lxc.start.delay di config, autostart via systemd lxc@.service atau lxc-autostart, menjalankan systemd sebagai init di dalam container, serta penghentian teratur dengan lxc-stop dan lxc-shutdown.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Container kalian sudah bisa dibuat, dijalankan, dibatasi, dan disnapshot. Tapi ada satu masalah praktis: setelah host reboot, semua container tetap mati — kecuali kita mengaturnya. Di episode 10 kita membuat container bertahan secara otomatis: autostart saat boot, manajemen lewat systemd, dan penghentian yang bersih. Ini yang membedakan container lab dari layanan infrastruktur sungguhan.

Autostart: Container Ikut Boot

Konfigurasi di Container Config

Autostart diatur lewat dua kunci di config container:

Linux/var/lib/lxc/c1/config (autostart)
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 100
  • lxc.start.auto = 1 — container otomatis start saat host boot.
  • lxc.start.delay = 5 — jeda 5 detik setelah container ini start (memberi waktu database/network container pertama stabil).
  • lxc.start.order = 100 — urutan start; makin kecil angkanya makin dulu (misal database order 50, web order 100).

Autostart dan Shutdown dari Command Line

Autostart semua container yang diaktifkan
sudo lxc-autostart
Shutdown semua container secara teratur
sudo lxc-autostart -s

lxc-autostart menghormati lxc.start.order dan lxc.start.delay yang sudah dikonfigurasi.

Tip

Urutkan dependensi: jika web server butuh database, beri database lxc.start.order = 10 dan web lxc.start.order = 100. Dengan lxc.start.delay, kalian memberi waktu database selesai boot sebelum web mencoba koneksi — mencegah race condition startup.

Systemd Integration

Unit lxc@.service

LXC modern menyediakan template unit systemd lxc@.service yang mengelola container sebagai service terdaftar di host. Dengan unit ini, seluruh kontrol systemd bekerja: enable, start, stop, status, hingga startup ordering terhadap service host lain.

Aktifkan autostart via systemd untuk container c1:

Aktifkan unit systemd untuk c1
sudo systemctl enable lxc@c1.service
sudo systemctl start lxc@c1.service

Periksa statusnya seperti service biasa:

Status unit container
systemctl status lxc@c1.service

Keuntungan unit ini: log container terintegrasi dengan journald host, dan systemd bisa menjamin urutan start terhadap unit lain (misal lxc@db harus jalan sebelum nginx host).

lxc-autostart vs systemd unit

  • lxc-autostart — sederhana, memakai pengaturan di config container (lxc.start.auto), cocok untuk skenario semua-container-ikut-boot.
  • lxc@.service — eksplisit per-container, bisa di-systemctl enable/disable satuan, dan terintegrasi dependency systemd.

Banyak pengguna memakai keduanya bersama: lxc.start.auto untuk perilaku default, unit systemd untuk kontrol granular. Hati-hati jangan sampai konfigurasi dobel membuat container di-start dua kali — biasanya aman karena LXC mencegah start dua kali, tapi tetap periksa systemctl status.

Service di Dalam Container: systemd sebagai init

Boot Penuh dengan systemd

Container modern (Ubuntu 24.04, Debian, Fedora) menjalankan systemd sebagai init (PID 1) di dalamnya. Artinya layanan di dalam container dikelola seperti host Linux biasa: systemctl enable/start/status berfungsi normal di dalam container.

Masuk dan kelola service:

Kelola service di dalam container
lxc-attach -n c1 -- systemctl status sshd
lxc-attach -n c1 -- systemctl enable --now sshd
lxc-attach -n c1 -- systemctl list-units --state=running

Note

Untuk systemd container berjalan penuh, host sebaiknya juga memakai systemd dan mendukung systemd-friendly container (bukan sekadar lxc.execute). Template resmi download sudah menghasilkan container systemd yang boot dengan benar. Pastikan tidak menggunakan template legacy lxc-execute untuk service yang butuh init penuh.

Port Forwarding atau Akses Layanan

Setelah service jalan di dalam container, akses dari luar via port forwarding (episode 6) atau langsung ke IP container jika jaringan dibridge:

Cek IP container untuk akses layanan
lxc-info -n c1 -iH

Penghentian Container: lxc-stop vs lxc-shutdown

lxc-shutdown: Shutdown Teratur

lxc-shutdown mengirim sinyal ke init container (mirip menekan tombol power di desktop): systemd menerima perintah shutdown, menghentikan service dengan rapi, lalu mematikan. Ini cara yang paling benar untuk menghentikan container.

Shutdown teratur
lxc-shutdown -n c1

lxc-stop: Penghentian Paksa / Hard

lxc-stop menghentikan container secara paksa — setara mencabut kabel listrik. Gunakan saat container hang atau lxc-shutdown tidak membalas.

Stop paksa
lxc-stop -n c1

Kapan Memakai yang Mana

  • Default: lxc-shutdown agar service menutup diri dengan bersih (penting untuk database).
  • Container tidak merespons: lxc-stop, lalu pikirkan kenapa shutdown tidak jalan.
  • Dalam skrip otomasi: coba shutdown dengan timeout, fallback ke stop.
Pola aman shutdown dengan fallback
lxc-shutdown -n c1 -t 10 || lxc-stop -n c1

Penutup

Inti yang harus dibawa pulang:

  • lxc.start.auto = 1 membuat container ikut boot; lxc.start.order dan lxc.start.delay mengatur urutan dan jeda.
  • lxc-autostart memproses semua container ber-start.auto; lxc-autostart -s mematikan semua.
  • Unit lxc@.service mengintegrasikan container ke systemd host dengan dependency dan log journald.
  • Container modern menjalankan systemd sebagai init; kelola service di dalamnya dengan systemctl.
  • lxc-shutdown untuk penghentian teratur, lxc-stop sebagai pilihan terakhir.

Di episode 11 selanjutnya kita akan membahas bind & mount host pathlxc.mount.entry untuk memasang direktori host ke dalam container, opsi mount seperti ro, serta kasus nyata berbagi direktori data dan akses device.

Belajar LXC - Autostart, Systemd & Service Management | Belajar LXC