Cara Install Docker Rootless di Ubuntu VPS Biar Aman dari Container Escape

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.

Jundi Husni Mubaraq

Jundi Husni Mubaraq

Saya seorang software engineer yang sejak awal 2026 megang penuh (sendirian) tanggung jawab infrastruktur server di tempat saya kerja: deploy dan maintain server Linux Ubuntu on-premises, bangun keamanan berlapis pakai CrowdSec dan Cloudflare, kelola job scheduling dan monitoring pakai Cronicle, deploy aplikasi containerized pakai Docker, sampai ngurusin mail server korporat dari nol. Sebelumnya saya 3+ tahun jadi Software Engineer/Fullstack Developer di beberapa perusahaan, termasuk proyek skala internasional (EUDR compliance system buat Lindt & Sprungli) dan sistem rumah sakit (SIMRS, rekam medis elektronik, integrasi BPJS Kesehatan) di RS PKU Muhammadiyah Surakarta. jundi.hm ini tempat saya dokumentasiin apa yang beneran saya kerjain dan pelajarin di lapangan, bukan sekadar riset teori, S.Kom dari Universitas Duta Bangsa Surakarta jadi bekal awal, tapi yang nulis di sini adalah pengalaman langsung ngelola server production sehari-hari. Selengkapnya: https://iam.jundi.hm

Lihat Juga Nih

Selanjutnya Nih

Kasih Komentar

Email kamu gak bakal ditampilin ke publik. Kalau ada tanda ini artinya wajib diisi ya *

Rekomendasi.

Lagi Viral.