Apa itu LXD? Solusi Virtualisasi Server yang Ringan dan Efisien

Apa itu LXD? Solusi Virtualisasi Server yang Ringan dan Efisien

Bitnesia Infrastructure May 2, 2026 45 EN

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:

  1. VM tradisional (KVM, QEMU, Hyper-V): Mengemulasi perangkat keras penuh, memiliki kernel sendiri, memberikan isolasi maksimal, namun memiliki overhead tinggi.
  2. Application container (Docker, Podman): Mengisolasi satu proses atau aplikasi dan berbagi kernel host, sehingga sangat efisien tetapi bukan merupakan full OS.
  3. 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:

AspekLXCLXDDocker
TipeLow-level container toolSystem container & VM managerApplication container runtime
AntarmukaCLI & library (liblxc)REST API, CLI, Web UICLI, REST API, daemon
Target workloadFull OS containerFull OS container & VMSingle process/application
Image managementManualBuilt-in image serverDocker Hub / registry
Penggunaan umumTingkat sistem, scriptingServer, VPS, private cloudMicroservice, 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:

  1. Application container (Docker, Podman) mengemas satu proses atau aplikasi. Teknologi ini cocok untuk microservice, CI/CD pipeline, dan deployment berbasis image yang immutable.
  2. 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 --vm

Konvergensi 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:

  1. AppArmor profiles: Mencegah kontainer melakukan tindakan berbahaya seperti sinyal antar-kontainer dan penulisan ke file sistem yang sensitif.
  2. 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 lxd

Ikuti 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 lxd

Langkah 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 lxd

Perintah 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 --minimal

Flag --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 init

Proses 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 list

Output 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=none

Langkah 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-pertama

LXD 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 list

Masuk ke shell interaktif kontainer:

lxc shell server-pertama

Anda 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 nginx

Gunakan 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:80

Menggunakan 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 :8443

Akses 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.

Dukung keberlanjutan tutorial open source Bitnesia melalui link di bawah ini.

Kirim Donasi

Related Posts