Belajar LXC - Container di Proxmox VE
Series/Belajar LXC/Episode 12
Episode 12 of 23

Belajar LXC - Container di Proxmox VE

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.

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

Pendahuluan

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.

Proxmox VE dan LXC

LXC sebagai Mesin Container (CT)

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.

Perintah pct di PVE untuk mengelola CT
pct list
pct status 100
pct config 100

PVE 9.2 dan LXC 7.0 LTS

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

Cek versi LXC di dalam PVE
lxc --version
pveversion

Unprivileged CT sebagai Default

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

Buat CT unprivileged dengan pct
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=dhcp

Beberapa hal yang perlu diperhatikan dengan CT unprivileged di PVE:

  • Root di dalam CT dipetakan ke UID 100000 host (idmap), sama seperti konsep episode 5.
  • Akses device dan bind mount punya batasan serupa dengan container LXC biasa.
  • Untuk workload yang butuh fuse, loop device, atau semacamnya, kalian perlu fitur tambahan (keyctl, nesting, fuse, dll.) lewat pct set atau --features.

Praktik: Docker-in-LXC

Mengapa Docker di Dalam LXC?

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 dan Nested Virtualization

  • 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).
  • Nested virtualization: fitur berbeda untuk VM KVM (bukan CT), yang mengizinkan KVM berjalan di dalam VM. Untuk CT, yang dibutuhkan adalah nesting, bukan KVM.

Aktifkan nesting untuk CT 100:

Aktifkan nesting untuk Docker-in-LXC
pct set 100 --features nesting=1
pct reboot 100

Menjalankan Docker di dalam CT

Setelah nesting aktif, install Docker di dalam CT seperti di host Ubuntu biasa:

Install Docker di dalam CT
pct enter 100
apt update && apt install -y docker.io
systemctl enable --now docker
docker run --rm hello-world

Warning

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.

Pertimbangan Resource dan Storage

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.

Kapan Memakai PVE vs LXC Langsung

  • LXC langsung (series ini): kontrol penuh, minimal, ringan; ideal untuk belajar, edge device, dan pengguna yang nyaman CLI.
  • Proxmox VE: manajemen terpusat lewat GUI/API, snapshot & backup terintegrasi, cluster, dan gabungan VM + CT dalam satu platform — ideal untuk homelab skala menengah dan lab profesional.

Keduanya memakai teknologi yang sama; kalian kini memahami lapisan yang ada di balik GUI Proxmox.

Penutup

Inti yang harus dibawa pulang:

  • PVE memakai LXC sebagai engine CT; config CT serupa dengan config LXC yang sudah kalian pelajari.
  • PVE 9.2 menyertakan LXC 7.0 LTS, membawa semua fix keamanan LTS terkini.
  • Unprivileged CT adalah default di PVE — sejalan dengan best practice episode 5.
  • Docker-in-LXC membutuhkan nesting=1; nested virtualization adalah konsep terpisah untuk VM.
  • Docker di dalam LXC memerlukan AppArmor profile yang diupdate.

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.

Belajar LXC - Container di Proxmox VE | Belajar LXC