Masih pakai Docker default yang jalan sebagai root di VPS produksi? Itu risiko yang sering diabaikan. Kalau ada container yang berhasil dibobol, attacker langsung dapat privilege root di host. Docker Rootless hadir buat nutup celah ini. Seluruh daemon dan container jalan pakai user biasa. Jadi walaupun container-nya jebol, penyerang cuma dapat akses user terbatas, bukan root penuh. Di artikel ini gue bahas kenapa ini penting, cara install Docker Rootless di Ubuntu VPS, sampai batasan yang perlu lo tahu.
Kenapa Docker Default Berbahaya Buat Server Produksi
Secara default, Docker daemon (dockerd) jalan dengan privilege root. Setiap container yang lo jalankan sebenarnya berkomunikasi ke daemon itu lewat socket yang juga dimiliki root. Akibatnya, siapa pun yang bisa akses docker.sock otomatis setara root di host, bukan cuma di dalam container. Bug di image yang lo pakai, container escape, atau salah konfigurasi volume mount bisa jadi celah masuk. Dampaknya bisa langsung ke seluruh server, bukan cuma satu aplikasi. Masalahnya makin serius kalau VPS itu juga dipakai buat hosting beberapa project sekaligus. Satu container yang jebol bisa jadi pintu masuk ke semua data di server yang sama.
Apa Itu Docker Rootless dan Cara Kerjanya
Docker Rootless menjalankan daemon dan seluruh container di dalam Linux user namespace, bukan sebagai root beneran. Di dalam namespace ini, proses container “merasa” dia jalan sebagai root. Tapi di level host, kernel memetakan UID itu ke user biasa yang tidak punya privilege apa-apa. Jadi kalau attacker berhasil escape dari container, yang mereka dapat cuma akses user Linux biasa milik lo. Bukan akses root ke seluruh sistem. Pemetaan UID/GID ini diatur lewat file /etc/subuid dan /etc/subgid. Mekanismenya beda total dari mode userns-remap lama, yang daemonnya sendiri tetap jalan sebagai root. Detail lengkap soal prasyarat dan batasan resminya bisa lo cek di dokumentasi resmi Docker soal Rootless mode.
Persiapan Sebelum Install Docker Rootless
Sebelum masuk instalasi, pastikan VPS Ubuntu lo (disarankan minimal Ubuntu 22.04 ke atas) sudah memenuhi beberapa syarat dasar. Kernel Linux harus mendukung user namespace. Idealnya sistem juga sudah pakai cgroup v2, biar fitur limit resource seperti –memory dan –cpus tetap berfungsi normal. Selain itu, package uidmap wajib terinstal, karena menyediakan binary newuidmap dan newgidmap buat mapping UID di dalam namespace.
sudo apt update
sudo apt install -y uidmap dbus-user-session
uname -r
Kalau output uname -r menunjukkan versi kernel di bawah 4.18, sebaiknya upgrade dulu OS-nya. Rootless mode bergantung penuh sama dukungan user namespace di kernel.
Cara Install Docker Rootless di Ubuntu VPS
Kalau di VPS lo sudah ada Docker versi biasa (rootful) yang jalan, matikan dulu daemon sistemnya. Ini penting biar tidak bentrok port dan socket dengan daemon rootless yang baru.
sudo systemctl disable --now docker.service docker.socket
sudo rm -f /var/run/docker.sock
Setelah itu, install Docker Rootless pakai installer resmi dari Docker. Jalankan sebagai user biasa, jangan pakai sudo. Inti dari rootless mode justru tidak butuh privilege root sama sekali di tahap ini.
curl -fsSL https://get.docker.com/rootless | sh
Setelah instalasi selesai, script itu bakal kasih tahu dua environment variable yang perlu ditambahin ke ~/.bashrc. Yaitu PATH ke direktori bin Docker Rootless dan DOCKER_HOST yang mengarah ke socket user. Setelah ditambahkan, reload shell dan aktifkan daemonnya lewat systemd user service.
systemctl --user enable docker
systemctl --user start docker
sudo loginctl enable-linger $(whoami)
Perintah loginctl enable-linger penting banget di sini. Tanpa itu, daemon Docker Rootless bakal mati begitu sesi SSH lo terputus, bukan tetap jalan di background seperti service biasa.
Verifikasi Docker Rootless Sudah Aktif
Buat memastikan daemon yang lo pakai memang versi rootless, cek lewat docker info. Perhatikan bagian Context serta Security Options.
docker info | grep -i rootless
docker context ls
Kalau muncul context bernama “rootless” dan security options menampilkan kata “rootless” di dalamnya, berarti setup sudah benar. Jangan lupa juga jalankan container test sederhana. Tujuannya buat mastiin semuanya benar-benar berfungsi, bukan cuma daemonnya nyala.
docker run --rm hello-world
Kelebihan dan Keterbatasan Docker Rootless
Keuntungan utamanya jelas dari sisi keamanan, terutama buat VPS yang menghadap publik atau dipakai bareng-bareng untuk beberapa aplikasi. Di sisi lain, ada beberapa trade-off yang perlu lo pertimbangkan sebelum migrasi penuh. Port di bawah 1024 tidak bisa langsung di-bind tanpa konfigurasi tambahan. Soalnya bind port privileged secara default memang dibatasi buat non-root. Beberapa driver networking dan fitur cgroup tertentu juga punya dukungan terbatas dibanding mode rootful biasa. Meskipun begitu, buat kebanyakan use case self-hosting seperti web app, API, atau reverse proxy di belakang Nginx, keterbatasan ini jarang jadi masalah nyata.
Troubleshooting Docker Rootless yang Sering Muncul
Salah satu error paling umum adalah daemon gagal start karena dbus-user-session belum terinstal atau belum aktif. Solusinya, install dulu package-nya lalu jalankan systemctl –user enable –now dbus tanpa sudo. Masalah lain yang sering muncul adalah container tidak bisa bind ke port di bawah 1024, meskipun sudah pakai docker run -p 80:80. Di titik ini, lo bisa pakai setcap buat kasih capability CAP_NET_BIND_SERVICE ke binary rootlesskit. Alternatifnya, set net.ipv4.ip_unprivileged_port_start=0 lewat sysctl biar semua user bisa bind port rendah. Kalau limit resource seperti –memory ternyata diabaikan begitu saja, biasanya penyebabnya sistem belum pindah ke cgroup v2. Cek dulu output docker info di bagian Cgroup Driver sebelum curiga ke konfigurasi lain.
Penutup
Docker Rootless bukan solusi ajaib yang bikin server lo 100% aman. Tapi ini salah satu langkah defense-in-depth paling efektif buat ngurangin dampak kalau ada container yang berhasil dibobol. Buat VPS produksi, apalagi yang jalanin beberapa aplikasi sekaligus, migrasi ke Docker Rootless sepadan banget sama sedikit effort ekstra di awal setup. Kalau lo masih baru belajar Docker dari nol, cek dulu panduan install Docker di Ubuntu VPS. Simpan juga kumpulan command Docker yang wajib dihafal biar makin lancar ngelola container sehari-hari.
























