Momen bersejarah: episode ini memandu pembuatan container pertama dengan lxc-create dan template download, memeriksa status lewat lxc-ls dan lxc-info, lalu menyalakan container dengan lxc-start serta masuk ke dalamnya melalui lxc-attach, lxc-console, dan lxc-execute.

Environment siap (episode 0-3), konsep sudah paham (episode 1-2). Sekarang waktunya aksi: membuat container pertama. Di episode 4 kita membuat container Ubuntu 24.04 bernama c1, memeriksa statusnya, menyalakannya, lalu masuk ke dalamnya lewat beberapa cara. Di akhir episode, kalian sudah menjalankan sistem Linux utuh di dalam container — tanpa VM, tanpa hypervisor.
Jalankan:
lxc-create -n c1 -t download -- -d ubuntu -r 24.04 -a amd64Mari bedah flag-nya:
-n c1 — nama container (c1).-t download — memakai template download yang mengambil image dari image server resmi.-d ubuntu — distro target.-r 24.04 — release (Ubuntu 24.04).-a amd64 — arsitektur host.Saat pertama kali, template akan bertanya soal mirror dan key — jawab default. Prosesnya mengunduh rootfs, mengekstraknya ke /var/lib/lxc/c1/rootfs, dan menulis config di /var/lib/lxc/c1/config.
Tip
Template download memakai image server resmi dari linuxcontainers.org. Untuk mencari kandidat image, kalian bisa mengetik lxc-create -n c1 -t download -- --list untuk melihat daftar distro dan release yang tersedia. Ini juga cara terbaik memvalidasi nama -d, -r, dan -a sebelum eksekusi.
Lihat daftar container:
lxc-ls -fOutput menampilkan kolom seperti NAME, STATE, AUTOSTART, dan IPV4. Untuk detail satu container:
lxc-info -n c1Pada tahap ini state masih STOPPED. Periksa juga struktur direktori yang dihasilkan:
ls -la /var/lib/lxc/c1/
cat /var/lib/lxc/c1/configNyalakan container:
lxc-start -n c1lxc-start menjalankan container di latar belakang (daemonized). Setelah beberapa detik, cek statusnya:
lxc-info -n c1
lxc-ls -fContainer dengan systemd akan butuh beberapa detik untuk boot penuh. State harus berubah menjadi RUNNING.
lxc-attach menjalankan perintah langsung di dalam namespace container, tanpa proses login:
lxc-attach -n c1 -- hostnameUntuk masuk ke shell interaktif:
lxc-attach -n c1Begitu masuk, cek bahwa kalian benar-benar "di dalam":
hostname
cat /etc/os-release
ps aux | head -10
exitHostname dan ps harus milik container, bukan host. Itu bukti PID dan UTS namespace bekerja.
lxc-console menghubungkan kalian ke console serial container — seperti menempelkan monitor ke mesin virtual. Cocok untuk melihat boot log atau login pada tty:
lxc-console -n c1Untuk keluar dari console, tekan kombinasi Ctrl+A lalu Q (bukan Ctrl+D).
Caution
lxc-attach tidak melakukan login — ia langsung mengeksekusi perintah sebagai user yang terkonfigurasi di container (biasanya root). Ini sangat praktis untuk administrasi, tetapi jangan salah menggunakannya sebagai "akses user": untuk akun non-root, gunakan lxc-console lalu login biasa, atau ssh ke IP container.
Berbeda dengan lxc-attach yang masuk ke container yang sedang berjalan, lxc-execute membuat lingkungan container baru untuk menjalankan satu perintah lalu berhenti:
lxc-execute -n c1 -- ls /Karena ia membuat lingkungan baru setiap kali, lxc-execute lebih cocok untuk job singkat dan testing, bukan untuk berinteraksi dengan container yang berjalan.
Untuk mematikan:
lxc-stop -n c1
lxc-info -n c1State kembali STOPPED. Jangan hapus container dulu — kita akan memakainya lagi di episode 5 dan 6.
Warning
Container tidak restart otomatis setelah host reboot kecuali lxc.start.auto diaktifkan (episode 10). Jangan heran jika container "hilang" setelah reboot — periksa lxc-ls -f sebelum panik, dan hidupkan kembali dengan lxc-start.
Inti yang harus dibawa pulang:
lxc-create -n c1 -t download -- -d ubuntu -r 24.04 -a amd64 membuat container Ubuntu 24.04.lxc-ls -f dan lxc-info -n c1 adalah mata kalian untuk status container.lxc-start menyalakan container; lxc-stop mematikannya.lxc-attach masuk tanpa login; lxc-console seperti monitor VM; lxc-execute untuk eksekusi sekali jalan.hostname dan ps di dalam container membuktikan isolasi namespaces.Di episode 5 selanjutnya kita akan membandingkan privileged vs unprivileged container — mengapa root di dalam container privileged sama dengan root di host, dan bagaimana unprivileged container memetakan user lewat user namespaces + idmapping untuk menjadi default modern yang aman bagi multi-tenant.