Episode ini membahas LXC sebagai mesin container (CT) Proxmox VE: arsitektur CT di atas liblxc, fakta PVE 9.2 yang menyertakan LXC 7.0 LTS, unprivileged CT sebagai default, serta praktik Docker-in-LXC dengan nesting dan nested virtualization.

Sejauh ini kalian mengelola LXC lewat CLI di host Linux biasa. Tapi ada pengelola LXC yang jauh lebih masif dipakai: Proxmox VE (PVE) — platform virtualisasi yang menjalankan LXC sebagai mesin container (CT) di samping VM KVM. Di episode 12 kita melihat bagaimana PVE memakai LXC, apa saja yang "di bawah kap" sebuah CT, dan bagaimana menjalankan Docker di dalamnya. Ini jembatan dari LXC mentah ke virtualisasi terkelola.
PVE memakai LXC sebagai engine container. Setiap CT di Proxmox sebenarnya adalah container LXC yang dikelola lewat API dan antarmuka web PVE, bukan lewat lxc-create langsung. Di balik layar, PVE menulis config LXC (formatnya mirip yang kita bahas sepanjang series) dan memanggil liblxc lewat wrapper-nya.
Karena itu semua konsep yang sudah kalian kuasai — namespaces, cgroups, networking bridge, storage, snapshot — berlaku langsung di PVE. Yang berubah hanyalah antarmukanya: GUI, API REST, dan CLI pct.
pct list
pct status 100
pct config 100Fakta penting untuk kalian: Proxmox VE 9.2 menyertakan LXC 7.0 LTS sebagai engine container-nya. Artinya semua perbaikan keamanan LTS 7.0 — termasuk fix CVE-2026-39402 (episode 16) — sudah masuk ke PVE 9.2. Ketika memakai PVE untuk produksi, verifikasi versi LXC di dalamnya:
lxc --version
pveversionSejak PVE 5, unprivileged CT adalah default saat membuat container baru — persis dengan arah yang kita rekomendasikan di episode 5. Di GUI, opsi "Unprivileged container" dicentang secara default; di CLI pct create ada flag:
pct create 100 local:vztmpl/ubuntu-24.04-standard_24.04-1_amd64.tar.zst \
--storage local-lvm \
--features nesting=1 \
--unprivileged 1 \
--net0 name=eth0,bridge=vmbr0,ip=dhcpBeberapa hal yang perlu diperhatikan dengan CT unprivileged di PVE:
fuse, loop device, atau semacamnya, kalian perlu fitur tambahan (keyctl, nesting, fuse, dll.) lewat pct set atau --features.Skenario umum di homelab: kalian ingin container LXC sebagai "node server" terisolasi, lalu menjalankan Docker di dalamnya untuk aplikasi. Ini menggabungkan kemudahan Docker dengan isolasi system container. Di PVE, pola ini disebut Docker-in-LXC dan direkomendasikan dengan mengaktifkan nesting.
nesting=1): mengizinkan container membuat namespace dan mount tambahan di dalamnya — syarat utama agar Docker di dalam CT bisa menjalankan container-nya sendiri (Docker memakai namespaces).Aktifkan nesting untuk CT 100:
pct set 100 --features nesting=1
pct reboot 100Setelah nesting aktif, install Docker di dalam CT seperti di host Ubuntu biasa:
pct enter 100
apt update && apt install -y docker.io
systemctl enable --now docker
docker run --rm hello-worldWarning
Docker di dalam LXC butuh AppArmor profile yang diupdate agar policy default LXC tidak memblokir operasi Docker (kita bahas detail di episode 13). Jika docker run gagal dengan error seccomp/AppArmor, jangan buru-buru menonaktifkan AppArmor — perbarui profile-nya sesuai dokumentasi resmi.
Saat menjalankan Docker-in-LXC, ingat dua lapis resource: CT dibatasi cgroups PVE, dan tiap container Docker dibatasi lagi di dalamnya. Rencanakan memory/CPU dua lapis ini (episode 7 dan 18), dan perhatikan bahwa storage Docker (images, volume) menumpuk di dalam rootfs CT — pantau ruang disknya.
Keduanya memakai teknologi yang sama; kalian kini memahami lapisan yang ada di balik GUI Proxmox.
Inti yang harus dibawa pulang:
nesting=1; nested virtualization adalah konsep terpisah untuk VM.Di episode 13 selanjutnya kita akan membahas AppArmor, SELinux & seccomp — MAC profile per-container, konteks SELinux, policy seccomp via lxc.seccomp.profile, cara membatasi syscall, dan memperbarui profile untuk workload seperti Docker-in-LXC.