Bagi banyak sysadmin dan penggemar homelab, Proxmox VE sudah menjadi andalan untuk mengelola virtual machine dan container LXC dalam satu platform. Tapi ada satu pertanyaan yang terus muncul di forum-forum IT: sebaiknya Docker dijalankan langsung di LXC, atau di dalam VM penuh?
Topik ini penting karena menyangkut trade-off klasik dalam dunia virtualisasi: isolasi versus efisiensi. Menjalankan Docker Engine di dalam sebuah VM Proxmox memberi Anda lapisan isolasi kernel yang tidak dimiliki LXC, sekaligus tetap mempertahankan fleksibilitas orkestrasi container yang menjadi alasan utama orang memakai Docker sejak awal.
Jika Anda sedang membangun homelab, server produksi skala kecil-menengah, atau sekadar ingin memahami arsitektur “container dalam VM” secara menyeluruh, artikel ini akan membahasnya dari nol sampai siap produksi—lengkap dengan langkah instalasi, studi kasus, kesalahan umum, dan tips keamanan.
Kenapa Docker di Dalam VM, Bukan Langsung di LXC?
Proxmox VE menawarkan dua jalur virtualisasi: LXC (container Linux) dan QEMU/KVM (virtual machine penuh). Keduanya bisa menjalankan Docker, tapi karakteristiknya sangat berbeda.
LXC: Ringan, Tapi Berbagi Kernel
Container LXC di Proxmox berjalan di atas kernel host yang sama. Ini membuatnya sangat ringan dan cepat boot, tapi punya konsekuensi: menjalankan Docker di dalam LXC (yang secara teknis juga container) berarti Anda menjalankan “container di dalam container”. Ini bisa berjalan dengan konfigurasi khusus (unprivileged container dengan nesting diaktifkan), tapi sering menimbulkan masalah kompatibilitas—terutama dengan fitur cgroup, AppArmor, dan beberapa driver storage Docker.
VM: Isolasi Penuh, Kompatibilitas Maksimal
Sebaliknya, VM Proxmox berjalan dengan kernelnya sendiri lewat KVM. Docker Engine yang dijalankan di dalamnya berperilaku persis seperti di server fisik biasa—tanpa workaround, tanpa fitur yang harus dimatikan. Konsekuensinya adalah overhead resource yang sedikit lebih besar dibanding LXC, tapi ini biasanya sepadan untuk beban kerja produksi yang butuh stabilitas dan keamanan lebih tinggi.
Singkatnya: LXC cocok untuk container ringan yang Proxmox kelola langsung, sementara VM adalah pilihan lebih aman untuk siapa pun yang ingin menjalankan Docker Engine secara utuh, termasuk Docker Compose, Docker Swarm, atau bahkan cluster Kubernetes kecil.
Persiapan: Apa yang Anda Butuhkan
Sebelum mulai, pastikan Anda memiliki:
- Node Proxmox VE yang sudah terinstal dan bisa diakses lewat web UI (versi 8.x atau 9.x direkomendasikan, mengingat Proxmox VE 7 sudah tidak lagi menerima update keamanan)
- Resource host yang cukup: minimal 2 vCPU, 4 GB RAM, dan 20 GB storage untuk VM Docker skala kecil
- ISO installer untuk sistem operasi guest—Debian 12/13 atau Ubuntu Server LTS adalah pilihan paling stabil untuk workload Docker
- Akses jaringan (bridge) yang sudah dikonfigurasi di Proxmox agar VM bisa terhubung ke LAN
Tutorial Step-by-Step: Setup Docker di Atas VM Proxmox
Langkah 1 — Buat VM Baru di Proxmox
Masuk ke Proxmox web UI, klik Create VM, lalu atur:
- General: beri nama yang jelas, misalnya
docker-host-01 - OS: pilih ISO Debian atau Ubuntu Server yang sudah diunggah ke storage Proxmox
- System: gunakan default BIOS/UEFI sesuai kebutuhan, aktifkan Qemu Agent (akan berguna untuk monitoring dari sisi Proxmox)
- Disk: gunakan format
qcow2ataurawtergantung storage backend, alokasikan minimal 20–32 GB - CPU: pilih tipe
hostagar VM mendapat akses penuh ke fitur CPU fisik (penting untuk performa container) - Memory: minimal 4096 MB, sesuaikan dengan jumlah container yang akan dijalankan
- Network: pilih bridge (misalnya
vmbr0) yang sudah terhubung ke jaringan fisik
Langkah 2 — Instal Sistem Operasi Guest
Boot VM dari ISO, ikuti proses instalasi standar Debian/Ubuntu Server. Saat partisi disk, gunakan skema LVM standar—ini akan memudahkan resize disk di kemudian hari lewat Proxmox.
Setelah instalasi selesai, update sistem:
sudo apt update && sudo apt upgrade -y
Langkah 3 — Instal Qemu Guest Agent
Agar Proxmox bisa memonitor status VM secara akurat (IP address, shutdown yang bersih, dll), instal guest agent di dalam VM:
sudo apt install qemu-guest-agent -y
sudo systemctl enable --now qemu-guest-agent
Langkah 4 — Instal Docker Engine
Gunakan repository resmi Docker agar mendapat versi terbaru dan update keamanan rutin:
sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Catatan: ganti
linux/debiandenganlinux/ubuntupada baris repository jika Anda menggunakan Ubuntu Server.
Langkah 5 — Verifikasi Instalasi
sudo systemctl status docker
sudo docker run hello-world
Jika output menampilkan pesan sukses dari image hello-world, berarti Docker Engine sudah berjalan normal di dalam VM.
Langkah 6 — (Opsional) Jalankan Docker Tanpa Sudo
Agar user biasa bisa menjalankan perintah Docker tanpa sudo:
sudo usermod -aG docker $USER
newgrp docker
Langkah 7 — Uji dengan Container Sungguhan
Sebagai contoh implementasi, jalankan container Nginx sederhana:
docker run -d -p 8080:80 --name web-test nginx
Akses http://<IP-VM>:8080 dari browser untuk memastikan port forwarding dan networking VM berfungsi baik.
Studi Kasus Sederhana: Homelab dengan Docker Compose
Bayangkan Anda ingin menjalankan stack sederhana: Nginx sebagai reverse proxy, Portainer untuk manajemen container berbasis web, dan sebuah aplikasi Node.js internal. Semua ini bisa didefinisikan dalam satu file docker-compose.yml di dalam VM Docker Anda:
version: "3.9"
services:
portainer:
image: portainer/portainer-ce:latest
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
restart: unless-stopped
volumes:
portainer_data:
Jalankan dengan:
docker compose up -d
Karena semua ini berjalan di dalam VM Proxmox, Anda mendapat keuntungan tambahan: snapshot VM. Sebelum melakukan perubahan besar pada stack Docker, cukup ambil snapshot dari Proxmox UI—jika terjadi masalah, rollback hanya perlu beberapa klik.
Best Practice Profesional
- Pisahkan VM per fungsi: hindari menumpuk terlalu banyak stack berbeda dalam satu VM Docker; pisahkan berdasarkan lingkungan (misalnya
docker-prod,docker-staging) agar isolasi kegagalan lebih terjaga - Manfaatkan snapshot Proxmox: selalu ambil snapshot sebelum upgrade Docker Engine atau perubahan konfigurasi besar
- Aktifkan backup terjadwal: gunakan fitur backup bawaan Proxmox (vzdump) untuk mem-backup seluruh VM secara berkala, bukan hanya volume Docker
- Gunakan CPU type
host: ini memastikan container di dalam VM mendapat akses instruksi CPU penuh, penting untuk workload yang berat secara komputasi - Batasi resource VM: tetapkan limit CPU dan memory di level Proxmox agar satu VM Docker tidak “memakan” resource node secara berlebihan
- Pantau lewat cgroup/monitoring: kombinasikan
docker statsdengan monitoring Proxmox untuk visibilitas penuh dari level VM sampai container - Pisahkan storage untuk data persisten: gunakan disk terpisah (mounted sebagai virtual disk kedua) khusus untuk volume Docker, agar mudah di-backup atau dipindah independen dari OS disk
Kesalahan yang Sering Terjadi
1. Lupa mengaktifkan nested virtualization saat salah pilih LXC Penyebab: mencoba menjalankan Docker di LXC tanpa mengaktifkan opsi nesting. Dampak: container Docker gagal start atau error terkait cgroup. Solusi: jika tetap ingin memakai LXC, aktifkan opsi nesting=1 melalui konfigurasi container; namun untuk kebutuhan produksi, VM tetap lebih direkomendasikan.
2. Alokasi resource VM terlalu kecil Penyebab: VM dibuat dengan RAM atau CPU minim di awal, lalu jumlah container bertambah seiring waktu. Dampak: performa container menurun drastis, bahkan OOM (out of memory) killer aktif dan mematikan proses penting. Solusi: monitor penggunaan resource secara berkala dan resize VM dari Proxmox UI saat diperlukan.
3. Tidak memisahkan disk data dari disk OS Penyebab: semua volume Docker disimpan di disk utama VM. Dampak: backup menjadi lambat dan besar, serta sulit memisahkan data penting saat migrasi VM. Solusi: tambahkan virtual disk kedua khusus untuk direktori data Docker (/var/lib/docker atau bind mount volume).
4. Mengabaikan update keamanan Docker Engine Penyebab: repository Docker tidak di-update secara rutin. Dampak: celah keamanan pada Docker Engine tidak tertambal, berisiko terhadap seluruh stack container. Solusi: jadwalkan apt update && apt upgrade rutin, atau gunakan tool otomatisasi seperti unattended-upgrades.
5. Networking bridge yang salah konfigurasi Penyebab: VM Docker menggunakan bridge yang tidak terhubung dengan benar ke jaringan fisik atau VLAN yang salah. Dampak: container tidak bisa diakses dari luar meski port sudah di-forward dengan benar. Solusi: verifikasi konfigurasi bridge di level Proxmox (/etc/network/interfaces) dan pastikan VLAN tagging konsisten dengan switch fisik.
Tips dan Rekomendasi Tambahan
- Untuk kebutuhan skala lebih besar, pertimbangkan menjalankan Docker Swarm atau bahkan k3s di beberapa VM Proxmox sekaligus—ini memberi Anda cluster container yang tetap terisolasi secara VM per node
- Gunakan template VM di Proxmox agar proses provisioning VM Docker baru bisa dilakukan dalam hitungan menit, bukan mengulang instalasi OS dari nol
- Kombinasikan dengan Proxmox Backup Server (PBS) untuk strategi backup incremental yang lebih efisien dibanding vzdump biasa
- Evaluasi kebutuhan Anda secara berkala: jika beban kerja sangat ringan dan tepercaya, LXC dengan nesting tetap menjadi opsi hemat resource yang valid untuk homelab skala kecil

Kesimpulan
Menjalankan Docker di dalam VM Proxmox adalah pendekatan yang memberi keseimbangan antara isolasi tingkat kernel dan fleksibilitas orkestrasi container. Pendekatan ini sangat cocok untuk siapa pun yang menginginkan stabilitas produksi tanpa mengorbankan kemudahan snapshot, backup, dan resource management yang ditawarkan Proxmox VE.
Poin-poin penting yang perlu diingat:
- VM memberi isolasi kernel penuh dibanding LXC, sehingga lebih aman untuk workload produksi
- Instalasi Docker di dalam VM sama seperti di server fisik biasa—tidak perlu workaround khusus
- Manfaatkan snapshot dan backup Proxmox sebagai lapisan keamanan tambahan di luar strategi backup Docker itu sendiri
- Pisahkan disk data dari disk OS, serta pantau resource secara berkala agar performa tetap optimal
Dengan mengikuti langkah dan best practice di atas, Anda bisa membangun infrastruktur Docker yang stabil, aman, dan mudah dikelola di atas platform Proxmox VE.
Sudah pernah mencoba menjalankan Docker di VM Proxmox, atau justru masih setia dengan LXC? Bagikan pengalaman Anda di kolom komentar!
Jangan ragu untuk berdiskusi jika menemui kendala saat setup—tim dan komunitas siap membantu. Jika artikel ini bermanfaat, bagikan ke rekan sysadmin atau komunitas homelab Anda, dan jangan lewatkan artikel terkait lainnya seputar virtualisasi, container, dan infrastruktur IT.
Frequently Asked Questions (FAQ)
Pertanyaan: Apakah lebih baik menjalankan Docker di LXC atau di VM Proxmox? Jawaban: Untuk kebutuhan produksi dan keamanan maksimal, VM lebih direkomendasikan karena memiliki kernel terpisah. LXC bisa jadi alternatif hemat resource untuk homelab skala kecil dengan risiko yang bisa diterima.
Pertanyaan: Berapa spesifikasi minimum VM untuk menjalankan Docker di Proxmox? Jawaban: Untuk penggunaan dasar, minimal 2 vCPU, 4 GB RAM, dan 20 GB storage sudah cukup. Sesuaikan lagi jika jumlah container bertambah banyak.
Pertanyaan: Apakah Docker Compose bisa dijalankan langsung di dalam VM ini? Jawaban: Bisa. Setelah Docker Engine terinstal beserta plugin docker-compose-plugin, Anda bisa menjalankan docker compose up -d seperti di server fisik biasa.
Pertanyaan: Bagaimana cara backup data Docker yang berjalan di VM Proxmox? Jawaban: Gunakan fitur backup bawaan Proxmox (vzdump) untuk mem-backup seluruh VM, dan pertimbangkan Proxmox Backup Server untuk backup incremental yang lebih efisien.
Pertanyaan: Apakah performa Docker di dalam VM jauh lebih lambat dibanding di server fisik? Jawaban: Selisihnya relatif kecil selama CPU type diatur ke host dan resource VM dialokasikan cukup. Overhead virtualisasi KVM modern umumnya minim untuk sebagian besar workload container.
Bagaimana pengalaman Anda menjalankan Docker di atas Proxmox?
Tulis di kolom komentar, ajak diskusi rekan komunitas homelab Anda, dan bagikan artikel ini agar lebih banyak sysadmin terbantu. Ikuti terus konten seputar virtualisasi, server, dan infrastruktur IT terbaru dari kami!