LXC (Linux Containers)

Proyek Linux Containers mencakup empat subproyek utama:

SubproyekKeterangan
LXCInti dari Linux Containers
LXCFSFilesystem virtual untuk container
IncusFork komunitas dari LXD, dikelola oleh kreator asli LXD
distrobuilderTool untuk membangun image container

Catatan: CGManager sudah deprecated (digantikan oleh CGroup namespace di kernel modern). LXD kini menjadi proyek Canonical — Incus hadir sebagai alternatif berbasis komunitas.

Container Unprivileged

Container unprivileged meningkatkan keamanan dengan memetakan UID/GID di dalam container ke range yang tidak digunakan oleh host.

Delegasi UID/GID Subordinat

Edit /etc/subuid dan /etc/subgid untuk mendelegasikan range:

root:1000000:65536
user:2000000:65536

Format setiap baris: <user>:<id_awal>:<jumlah_id>

FieldKeterangan
userPengguna yang mendapat delegasi range
1000000ID terkecil dalam range
65536Jumlah ID berurutan dalam range

Jumlah ID sebaiknya kelipatan 65536. Pastikan range antar pengguna tidak saling tumpang tindih.

Mengonfigurasi LXC

sudo xbps-install -S lxc

Container privileged (sebagai root) tidak memerlukan konfigurasi tambahan — langsung gunakan perintah lxc-*.

File Konfigurasi Mapping ID

Sebelum membuat container, tentukan mapping UID/GID di file lxc.conf:

Tipe UserLokasi File
root/etc/lxc/default.conf
User biasa~/.config/lxc/default.conf

Tambahkan mapping berikut:

lxc.idmap = u 0 1000000 65536
lxc.idmap = g 0 1000000 65536
FieldKeterangan
uUID mapping
gGID mapping
0Awal range UID/GID di dalam container
1000000Awal range UID/GID di host
65536Jumlah ID yang dipetakan

Konfigurasi Jaringan (User Non-Root)

Edit /etc/lxc/lxc-usernet sebagai root untuk mengizinkan user membuat perangkat jaringan virtual:

user veth lxcbr0 10

Baris ini mengizinkan user membuat hingga 10 perangkat veth yang terhubung ke bridge lxcbr0.

Membuat Container

lxc-create -n mycontainer -t download -- \
    --dist voidlinux --release current --arch amd64

Untuk image musl, tambahkan --variant musl. Lihat LXC Image Server untuk daftar container yang tersedia.

Lokasi Penyimpanan Container

TipeLokasi Default
Container sistem/var/lib/lxc
Container user~/.local/share/lxc

Nilai ini dapat diubah via lxc.lxcpath di lxc.system.conf.

Tips keamanan: Secara default, semua container berbagi mapping UID/GID yang sama. Untuk mengisolasi container satu sama lain, ubah lxc.idmap ke range unik sebelum membuat setiap container.

Incus (Alternatif yang Disarankan)

Incus menyediakan antarmuka yang lebih modern untuk mengelola container dan virtual machine, tanpa konfigurasi manual seperti di atas.

Instalasi

Set CGROUP_MODE di /etc/rc.conf:

CGROUP_MODE=unified

Instal dan aktifkan Incus:

sudo xbps-install -S incus
ln -s /etc/sv/incus /var/service/

Akses Pengguna

# Akses penuh
sudo usermod -aG _incus-admin <nama_user>

# Akses terbatas
sudo usermod -aG _incus <nama_user>
ln -s /etc/sv/incus-user /var/service/

⚠️ incus-user akan menginisialisasi profil default Incus saat pertama kali dijalankan. Jika ingin mengontrol inisialisasi sendiri, jalankan incus admin init sebelum mengaktifkan incus-user.

incus-user juga dapat menggantikan konfigurasi jaringan profil default jika dianggap tidak valid — ini terjadi saat boot, bukan saat user memanggil Incus.

Dependensi Tambahan

sudo xbps-install -S qemu edk2-ovmf   # Untuk menjalankan virtual machine
sudo xbps-install -S skopeo            # Untuk menjalankan OCI container

Migrasi dari LXD / LXC

sudo xbps-install -S incus-tools

# Migrasi dari LXD
lxd-to-incus

# Migrasi dari LXC
lxc-to-incus

LXD

LXD adalah alternatif antarmuka LXC yang kini dikelola oleh Canonical.

sudo xbps-install -S lxd
ln -s /etc/sv/lxd /var/service/
sudo usermod -aG lxd <nama_user>

Gunakan perintah lxc untuk mengelola instance LXD.


@T4n-Labs · @Gh0sT4n