Menjalankan berbagai layanan pada satu server fisik selalu menjadi tantangan klasik bagi sysadmin. Virtual Machine (VM) menawarkan isolasi penuh, tetapi memiliki overhead yang berat. Docker memang efisien, namun platform ini dirancang untuk application container, bukan full OS. LXD hadir di antara kedua pilihan tersebut sebagai sistem kontainer yang memberikan pengalaman layaknya VM, tetapi bekerja seringan kontainer.
Apa itu LXD?
LXD (diucapkan lex-dee) merupakan manajer sistem kontainer dan mesin virtual yang dikembangkan oleh Canonical, yaitu perusahaan di balik Ubuntu. Sejak tahun 2015, LXD menjadi solusi resmi Canonical untuk mengelola system container berbasis Linux, dan kini platform tersebut telah berkembang hingga mampu mengelola VM.
LXD berada pada versi feature release terbaru 6.8 per April 2026 yang tersedia melalui channel latest/stable atau 6/stable di Snap Store. Pengguna yang membutuhkan stabilitas jangka panjang dapat menggunakan channel LTS 5.21/stable yang mendapatkan pembaruan keamanan serta perbaikan bug tanpa perubahan fitur besar. Proyek ini bersifat open-source dan menggunakan lisensi AGPL-3.0.
Ekosistem virtualisasi Linux memiliki tiga lapisan besar yang perlu dipahami:
- VM tradisional (KVM, QEMU, Hyper-V): Mengemulasi perangkat keras penuh, memiliki kernel sendiri, memberikan isolasi maksimal, namun memiliki overhead tinggi.
- Application container (Docker, Podman): Mengisolasi satu proses atau aplikasi dan berbagi kernel host, sehingga sangat efisien tetapi bukan merupakan full OS.
- System container (LXD/LXC): Menjalankan full OS Linux di dalam kontainer serta berbagi kernel host, sehingga memiliki overhead minimal dan isolasi yang kuat.
LXD menempati posisi pada lapisan ketiga sekaligus mampu menjangkau lapisan pertama karena platform ini juga mendukung VM berbasis QEMU. Kemampuan tersebut menjadikannya platform tunggal yang fleksibel untuk berbagai skenario deployment.
System Container Manager
LXD merupakan daemon yang berjalan di atas liblxc dan menyediakan REST API kaya fitur untuk mengelola kontainer serta VM. Perintah CLI berkomunikasi dengan daemon LXD melalui socket Unix atau jaringan saat Anda menjalankan perintah lxc launch, yang kemudian berkoordinasi dengan liblxc untuk membuat dan menjalankan kontainer.
Setiap kontainer LXD menjalankan sistem operasi Linux penuh lengkap dengan init system (seperti systemd), service manager, serta proses-proses yang berjalan secara bersamaan. Hal ini berbeda secara fundamental dari Docker yang umumnya hanya menjalankan satu proses utama per kontainer.
Perbedaan LXD, LXC, dan Docker
Kebingungan antara LXD dan LXC sangat umum terjadi. Pemahaman terhadap perbedaan ketiganya menjadi hal yang sangat penting:
| Aspek | LXC | LXD | Docker |
|---|---|---|---|
| Tipe | Low-level container tool | System container & VM manager | Application container runtime |
| Antarmuka | CLI & library (liblxc) | REST API, CLI, Web UI | CLI, REST API, daemon |
| Target workload | Full OS container | Full OS container & VM | Single process/application |
| Image management | Manual | Built-in image server | Docker Hub / registry |
| Penggunaan umum | Tingkat sistem, scripting | Server, VPS, private cloud | Microservice, CI/CD, development |
LXD bukan merupakan versi baru dari LXC. LXD adalah lapisan manajemen yang dibangun di atas LXC untuk memberikan kemudahan penggunaan, keamanan yang lebih baik, serta fitur-fitur enterprise seperti clustering, live migration, dan storage management yang tidak tersedia di LXC secara native.
Application Container vs. System Container
Pemahaman terhadap perbedaan ini sangat penting sebelum memilih tools yang tepat:
- Application container (Docker, Podman) mengemas satu proses atau aplikasi. Teknologi ini cocok untuk microservice, CI/CD pipeline, dan deployment berbasis image yang immutable.
- System container (LXD) mensimulasikan sistem operasi penuh dan memungkinkan berbagai proses berjalan bersamaan. Solusi ini cocok untuk mengisolasi lingkungan pengguna, menjalankan berbagai layanan dalam satu unit, atau membangun private cloud sederhana.
Dokumentasi resmi LXD menyebutkan bahwa system container cocok digunakan saat semua fungsionalitas yang dibutuhkan kompatibel dengan kernel host. Sebaliknya, VM menjadi pilihan yang lebih tepat jika membutuhkan kernel sendiri karena ketidakcocokan fungsionalitas tersebut.
Dukungan VM dalam LXD
LXD mendukung VM secara native menggunakan QEMU sebagai backend sejak versi 4.0. Kontainer dan VM dapat dikelola melalui antarmuka yang sama, baik CLI maupun Web UI bawaan LXD. Perbedaan pengelolaannya hanya terletak pada flag --vm saat membuat instance:
# Membuat kontainer (default)
lxc launch ubuntu:24.04 nama-kontainer
# Membuat VM
lxc launch ubuntu:24.04 nama-vm --vmKonvergensi antara kontainer dan VM dalam satu platform menjadi salah satu nilai jual utama LXD jika dibandingkan dengan solusi lainnya.
Keunggulan LXD
Performa Tinggi melalui Overhead Minimal
Sistem kontainer LXD berbagi kernel dengan host sehingga overhead CPU dan memori jauh lebih kecil dibanding VM tradisional. Proses emulasi perangkat keras tidak diperlukan dalam sistem ini. Hasilnya, sebuah server dengan RAM 16 GB bisa menjalankan puluhan kontainer LXD secara bersamaan, sementara hypervisor tradisional mungkin hanya mampu menangani beberapa VM dalam kondisi yang sama.
Waktu startup kontainer LXD rata-rata berada di bawah satu detik berdasarkan pengujian performa dari komunitas Canonical, sementara VM membutuhkan puluhan detik untuk boot penuh.
Isolasi Sistem yang Kuat
Setiap kontainer LXD berjalan dalam ruang nama (namespace) yang terisolasi, mencakup network namespace, PID namespace, mount namespace, dan user namespace. Hal tersebut membuat proses di dalam satu kontainer tidak dapat melihat atau memengaruhi proses di kontainer lain maupun di host.
LXD menjalankan kontainer dalam mode unprivileged secara default. Mekanisme ini memetakan root di dalam kontainer ke UID non-root di host melalui UID/GID mapping. Proses hanya memiliki hak akses sebagai pengguna biasa di sistem host bahkan jika berhasil keluar dari kontainer.
Tambahan lapisan keamanan juga diberikan oleh:
- AppArmor profiles: Mencegah kontainer melakukan tindakan berbahaya seperti sinyal antar-kontainer dan penulisan ke file sistem yang sensitif.
- Seccomp policies: Memblokir system call berbahaya seperti pemuatan kernel module, kexec, dan forced unmount.
Skalabilitas dan Fleksibilitas
LXD mampu berjalan dari satu instance di laptop pengembang hingga cluster penuh di rak data center. Fitur clustering bawaan memungkinkan pengelolaan ratusan node melalui satu titik kontrol. Kemampuan ini mendasari langkah Canonical dalam memposisikan LXD sebagai fondasi untuk MicroCloud, yaitu solusi private cloud skala kecil mereka.
Kasus penggunaan yang umum meliputi:
- Hosting web server (Nginx, Apache) dan database (MySQL, PostgreSQL) dalam kontainer terpisah.
- Pembangunan VPS-in-VPS untuk kebutuhan multitenancy
- Lingkungan pengembangan yang terisolasi per proyek.
- CI/CD runner dengan lingkungan bersih yang bisa di-snapshot dan di-restore.
- Pengujian konfigurasi sistem operasi tanpa risiko merusak host.
Manajemen Storage yang Canggih
LXD mendukung berbagai backend storage, termasuk ZFS, Btrfs, LVM, Ceph, dan direktori biasa. ZFS menjadi backend yang direkomendasikan karena mendukung copy-on-write yang memungkinkan pembuatan kontainer baru dari snapshot dalam hitungan milidetik.
Fitur snapshot bawaan LXD juga sangat bermanfaat untuk backup dan rollback. Sebuah kontainer bisa di-snapshot sebelum melakukan perubahan besar, lalu dipulihkan dalam hitungan detik jika terjadi kegagalan sistem.
REST API dan Ekosistem Integrasi
LXD menyediakan REST API yang lengkap dan terdokumentasi untuk memudahkan integrasi dengan sistem otomasi seperti Ansible, Terraform, atau skrip shell kustom. Tersedia pula client library untuk Python (pylxd) dan Go. Web UI bawaan bisa diaktifkan untuk manajemen visual langsung dari browser tanpa instalasi tambahan.
Instalasi LXD
Persyaratan Sistem
Pastikan sistem memenuhi persyaratan minimum berikut sebelum memulai instalasi:
- Sistem operasi Linux (disarankan Ubuntu 24.04 LTS atau Ubuntu 26.04 LTS).
- Minimal 20 GiB ruang disk kosong.
- Akses root atau sudo ke sistem.
- Koneksi internet untuk mengunduh package dan image kontainer.
LXD telah terinstal secara default pada Ubuntu Server cloud image. Cara termudah untuk sistem lain adalah melalui snap.
Langkah 1: Instalasi LXD via Snap
Snap merupakan cara yang direkomendasikan Canonical untuk menginstal serta memperbarui LXD. Metode ini memastikan Anda selalu mendapatkan versi terbaru yang sudah diuji dari channel yang dipilih. Jalankan perintah berikut untuk menginstal LXD:
sudo snap install lxdIkuti panduan instalasi snap di snapcraft.io jika snap belum tersedia di sistem Anda.
Cek versi yang aktif jika LXD sudah terinstal sebelumnya dan Anda ingin memastikan versinya adalah 5.21 atau lebih baru:
snap list lxdLangkah 2: Menambahkan User ke Grup lxd
LXD berkomunikasi melalui Unix socket yang hanya bisa diakses oleh anggota grup lxd. Tambahkan user aktif Anda ke grup ini:
sudo usermod -aG lxd "$USER"
newgrp lxdPerintah newgrp lxd mengaktifkan keanggotaan grup di sesi terminal saat ini tanpa perlu logout. Terdapat catatan keamanan penting: akses ke grup lxd setara dengan akses root karena pengguna lxd dapat melampirkan path filesystem atau perangkat ke kontainer mana pun. Berikan akses ini hanya kepada pengguna yang terpercaya.
Langkah 3: Inisialisasi LXD
Jalankan perintah inisialisasi setelah instalasi untuk menyiapkan konfigurasi dasar LXD, termasuk storage pool dan konfigurasi jaringan:
lxd init --minimalFlag --minimal menjalankan inisialisasi dengan nilai default yang aman dan cocok untuk sebagian besar skenario. Jalankan perintah tanpa flag tersebut jika ingin mengonfigurasi pilihan seperti backend storage (ZFS, Btrfs, LVM) atau ketersediaan jaringan secara interaktif:
lxd initProses interaktif ini akan menanyakan beberapa pilihan:
- Backend storage: ZFS (direkomendasikan), Btrfs, LVM, atau direktori.
- Ukuran storage pool atau block device yang digunakan.
- Ketersediaan LXD melalui jaringan (untuk clustering atau akses remote).
Langkah 4: Konfigurasi Jaringan (Bridge Networking)
LXD secara otomatis membuat bridge network bernama lxdbr0 selama inisialisasi yang memungkinkan kontainer terhubung ke internet melalui NAT. Verifikasi bahwa bridge sudah aktif:
lxc network listOutput yang diharapkan akan menampilkan lxdbr0 dengan status CREATED. Gunakan perintah berikut jika bridge perlu dikonfigurasi secara manual:
lxc network create lxdbr0 ipv4.address=10.10.10.1/24 ipv4.nat=true ipv6.address=noneLangkah 5: Membuat Kontainer Pertama
Buat kontainer Ubuntu pertama Anda setelah LXD siap. Perintah lxc launch berfungsi mengunduh image, membuat kontainer, dan langsung menjalankannya:
lxc launch ubuntu:24.04 server-pertamaLXD akan mengunduh image Ubuntu 24.04 LTS dari server image resmi Canonical (ubuntu:). Image yang sudah diunduh akan disimpan dalam cache lokal sehingga pembuatan kontainer berikutnya menjadi jauh lebih cepat.
Verifikasi kontainer berjalan:
lxc listMasuk ke shell interaktif kontainer:
lxc shell server-pertamaAnda kini berada di dalam kontainer sebagai root. Semua perintah Linux berjalan normal di dalam lingkungan yang terisolasi ini.
Mengelola Kontainer: Perintah-Perintah Dasar
Berikut adalah kumpulan perintah lxc yang paling sering digunakan dalam pengelolaan kontainer sehari-hari:
lxc list: Melihat daftar semua kontainer dan VM.lxc init ubuntu:24.04 nama-kontainer: Membuat kontainer tanpa langsung menjalankannya.lxc start nama-kontainer: Menjalankan kontainer yang sudah ada.lxc stop nama-kontainer: Menghentikan kontainer.lxc delete nama-kontainer: Menghapus kontainer (harus dihentikan dahulu).lxc exec nama-kontainer -- perintah: Menjalankan perintah di dalam kontainer dari host.lxc info nama-kontainer: Melihat informasi detail kontainer.lxc config set nama-kontainer limits.cpu=2 limits.memory=1GiB: Mengatur batas resource.
Membuat Snapshot dan Restore
Kemampuan snapshot merupakan salah satu fitur terpenting LXD untuk operasional server. Buat snapshot sebelum melakukan perubahan konfigurasi besar:
lxc snapshot nama-kontainer sebelum-update: Membuat snapshot bernama "sebelum-update".lxc info nama-kontainer: Melihat daftar snapshot.lxc restore nama-kontainer sebelum-update: Memulihkan kontainer ke keadaan snapshot.lxc delete nama-kontainer/sebelum-update: Menghapus snapshot yang tidak diperlukan.
Memperbarui LXD dan Menahan Auto-Update
Snap memperbarui LXD secara otomatis sesuai pengaturan default. Pengelola sistem disarankan untuk menahan pembaruan otomatis pada lingkungan produksi dan menerapkannya secara manual pada jendela maintenance yang terjadwal:
sudo snap refresh --hold lxd: Menahan pembaruan otomatis LXD.sudo snap refresh lxd: Memperbarui LXD secara manual saat siap.sudo snap refresh --unhold lxd: Menghapus hold dan kembali ke pembaruan otomatis.
Skenario Penggunaan Lanjutan
Menjalankan Web Server dalam Kontainer
Contoh praktis penggunaan ini adalah mengisolasi Nginx dalam kontainer tersendiri agar tidak mengganggu layanan lain pada host. Masuk dan instal Nginx setelah kontainer berjalan:
lxc launch ubuntu:24.04 web-server
lxc exec web-server -- bash -c "apt update && apt install -y nginx"
lxc exec web-server -- systemctl enable --now nginxGunakan konfigurasi proxy device untuk mengekspos port kontainer ke host:
lxc config device add web-server port80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80Menggunakan Profiles untuk Standarisasi Konfigurasi
Profile LXD merupakan kumpulan konfigurasi yang dapat diterapkan ke banyak kontainer sekaligus. Fitur ini sangat berguna untuk menstandarisasi resource limit, device, serta konfigurasi jaringan di seluruh infrastruktur:
lxc profile list: Melihat profile yang ada.lxc profile create production: Membuat profile baru.lxc profile edit production: Mengedit profile.lxc profile launch ubuntu:24.04 app-server --profile production: Menerapkan profile saat membuat kontainer.
Kontainer Berbasis Distribusi Selain Ubuntu
LXD tidak terbatas pada Ubuntu saja. Server image komunitas (images:) menyediakan image untuk berbagai distribusi Linux seperti Debian, Alpine, Fedora, Arch Linux, dan openSUSE:
lxc image list images:: Melihat semua image yang tersedia.lxc launch images:debian/12 server-debian: Menjalankan kontainer Debian.lxc launch images:alpine/3.19 server-alpine: Menjalankan kontainer Alpine Linux yang sangat ringan.
Mengakses Web UI LXD
LXD menyediakan antarmuka grafis berbasis web yang bisa diaktifkan untuk manajemen visual. Web UI dapat diakses melalui browser setelah Anda mengonfigurasi LXD agar mendengarkan permintaan di jaringan:
lxc config set core.https_address :8443Akses melalui browser pada alamat: https://IP-SERVER:8443.
Web UI menyediakan tampilan dashboard kontainer, manajemen image, konfigurasi jaringan, serta storage tanpa memerlukan instalasi aplikasi tambahan.
Kesimpulan
LXD merupakan solusi ideal bagi sysadmin dan developer yang menawarkan efisiensi kontainer dengan pengalaman layaknya Virtual Machine, ditandai dengan overhead minimal, isolasi kuat, serta manajemen storage canggih untuk production maupun development server. Didukung keamanan konsisten dari Canonical dan REST API komprehensif, platform ini menjadi pilihan andal untuk otomatisasi dan pengelolaan berbagai beban kerja modern.




