Cara Mengatasi Error Docker “Got permission denied while trying to connect to the Docker daemon socket” [Panduan Terbaru 2026]

スポンサーリンク

Cara Mengatasi Error Docker “Got permission denied while trying to connect to the Docker daemon socket” [Panduan Terbaru 2026]

Salah satu error yang paling sering ditemui saat mulai menggunakan Docker adalah “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock”. Artikel ini menjelaskan secara detail penyebab dan solusi spesifik untuk error ini, yang telah diperbarui untuk lingkungan terbaru tahun 2026. Ini adalah bacaan wajib bagi semua pengguna yang menjalankan Docker di Linux (Ubuntu, CentOS, Debian, dll.).

Apa Error Ini? Gejala yang Akan Anda Alami

Setelah menginstal Docker atau saat menjalankan perintah docker di server Linux, Anda mungkin akan melihat pesan error berikut:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.

Error ini bisa terjadi pada hampir semua perintah Docker, termasuk docker ps, docker run, dan docker-compose up. Secara spesifik, Anda mungkin mengalami gejala-gejala berikut:

  • docker run hello-world gagal: Kasus pertama yang paling sering ditemui saat memverifikasi instalasi Docker
  • docker ps tidak menampilkan container: Tidak bisa melihat container yang sedang berjalan karena error permission
  • docker-compose up tidak bisa dimulai: Aplikasi multi-container gagal diluncurkan
  • Pipeline CI/CD gagal: Perintah Docker di Jenkins, GitHub Actions, GitLab CI, dll. terhenti karena error permission
  • Ekstensi Dev Containers VS Code tidak bisa terhubung: Tidak bisa terhubung ke Docker di lingkungan pengembangan jarak jauh

Ketika error ini terjadi, semua fungsionalitas Docker menjadi tidak bisa digunakan, menghentikan pekerjaan pengembangan Anda sepenuhnya. Ini sangat membingungkan terutama bagi pengguna yang baru mengenal Docker.

Penyebab Error Ini

Penyebab 1: Pengguna Saat Ini Tidak Ada di Grup Docker

Ini adalah penyebab paling umum. Docker daemon berkomunikasi melalui Unix socket (/var/run/docker.sock) secara default, dan socket ini dimiliki oleh pengguna root (administrator). Pengguna biasa perlu masuk ke grup docker untuk menjalankan perintah Docker. Hanya menginstal Docker saja tidak otomatis menambahkan pengguna Anda ke grup ini, sehingga menyebabkan error permission.

# Periksa permission socket
ls -la /var/run/docker.sock
# Contoh output: srw-rw---- 1 root docker 0 Feb 12 10:00 /var/run/docker.sock

Penyebab 2: Belum Logout/Login Setelah Perubahan Grup

Setelah menjalankan sudo usermod -aG docker $USER untuk menambahkan pengguna ke grup docker, Anda belum logout dan login kembali. Di Linux, perubahan keanggotaan grup tidak berlaku sampai Anda memulai sesi baru (login). Ini adalah kelalaian yang sangat umum, dan pertanyaan seperti “saya sudah menjalankan perintahnya tapi masih tidak bisa” sering muncul di Stack Overflow dan Reddit.

Penyebab 3: Docker Daemon Tidak Berjalan

Error serupa bisa terjadi ketika layanan Docker itu sendiri berhenti. Ini terjadi ketika Docker tidak dikonfigurasi untuk dimulai otomatis setelah server di-reboot, atau ketika instalasi Docker tidak lengkap.

# Periksa status layanan Docker
sudo systemctl status docker

Penyebab 4: Permission /var/run/docker.sock Telah Diubah Secara Tidak Benar

Ini terjadi ketika permission file socket diubah secara manual, atau ketika tool keamanan mereset permission-nya. Socket seharusnya srw-rw---- dengan kepemilikan root:docker; jika permission-nya berbeda, koneksi normal akan gagal.

Penyebab 5: Pembatasan Akses SELinux atau AppArmor

Pada distribusi Linux yang diperkuat keamanannya (RHEL, CentOS, Fedora, dll.), SELinux mungkin memblokir akses ke socket Docker. Demikian juga, pada Ubuntu dan sistem serupa, AppArmor bisa menjadi penyebabnya.

Solusi 1: Tambahkan Pengguna Anda ke Grup Docker (Direkomendasikan)

Ini adalah solusi paling aman dan paling direkomendasikan. Ini juga merupakan pendekatan yang direkomendasikan dalam dokumentasi resmi Docker.

Langkah 1: Periksa Apakah Grup Docker Ada

Pertama, verifikasi bahwa grup docker ada di sistem Anda. Biasanya grup ini dibuat secara otomatis saat instalasi Docker, tapi sebaiknya diperiksa.

# Periksa apakah grup docker ada
cat /etc/group | grep docker

Jika grup tidak ada, buat dengan perintah berikut:

# Buat grup docker
sudo groupadd docker

Langkah 2: Tambahkan Pengguna Saat Ini ke Grup Docker

Gunakan perintah berikut untuk menambahkan pengguna yang sedang login ke grup docker:

# Tambahkan pengguna saat ini ke grup docker
sudo usermod -aG docker $USER

Penjelasan perintah:
usermod: Perintah untuk memodifikasi akun pengguna
-a: Mode append (tidak menghapus dari grup yang sudah ada)
-G docker: Menentukan grup docker
$USER: Secara otomatis diisi dengan nama pengguna login saat ini

Untuk menambahkan pengguna tertentu, ganti $USER dengan nama pengguna:

# Contoh: Tambahkan pengguna tertentu
sudo usermod -aG docker namapengguna

Langkah 3: Terapkan Perubahan Grup

Metode A: Logout & login kembali (paling andal)

# Untuk koneksi SSH
exit
# Kemudian hubungkan kembali via SSH

# Untuk lingkungan desktop
# Logout dan login kembali

Metode B: Gunakan newgrp untuk efek langsung (hanya terminal saat ini)

# Aktifkan grup docker langsung di sesi shell saat ini
newgrp docker

Metode ini hanya berlaku untuk sesi terminal saat ini. Saat membuka terminal baru, Anda perlu logout dan login kembali.

Langkah 4: Verifikasi Konfigurasi

# Periksa apakah Anda termasuk dalam grup docker
groups

# Tes apakah Docker berjalan dengan benar
docker run hello-world

Jika Anda melihat pesan Hello from Docker!, konfigurasi sudah selesai dengan benar.

Catatan Penting

  • Melupakan opsi -a (append) akan menyebabkan pengguna hanya masuk ke grup docker “saja”, menghapusnya dari semua grup lain. Selalu gunakan -aG bersamaan
  • Keanggotaan grup docker memberikan hak istimewa setara root kepada pengguna tersebut. Hanya tambahkan pengguna yang terpercaya
  • Di lingkungan WSL2 (Windows Subsystem for Linux), restart WSL (wsl --shutdown) mungkin diperlukan

Solusi 2: Gunakan sudo dengan Perintah Docker

Ini adalah solusi untuk lingkungan di mana Anda tidak bisa mengubah pengaturan grup, atau ketika Anda perlu menggunakan Docker sementara.

Cukup tambahkan sudo di depan semua perintah Docker untuk menjalankannya dengan hak istimewa root:

# Jalankan perintah Docker dengan sudo
sudo docker run hello-world
sudo docker ps
sudo docker-compose up -d

Metode ini langsung bisa digunakan tetapi memiliki kelemahan berikut:

  • Harus mengetik sudo setiap kali
  • Membuat eksekusi dalam Docker Compose dan script menjadi rumit
  • sudo mungkin tidak tersedia di pipeline CI/CD
  • Variabel lingkungan dan pengaturan konteks Docker menggunakan milik pengguna root

Untuk penggunaan jangka panjang, sangat direkomendasikan untuk menambahkan pengguna ke grup docker (Solusi 1).

Untuk penggunaan Docker Compose:

# Docker Compose
sudo docker compose up -d

# Docker Compose lama (v1)
sudo docker-compose up -d

Solusi 3: Gunakan Mode Rootless Docker (Lanjutan)

Mode Rootless, yang didukung secara resmi sejak Docker 20.10, menjalankan daemon Docker itu sendiri dengan hak istimewa pengguna biasa. Pada tahun 2026, Docker Engine 27.x telah lebih meningkatkan stabilitas, menjadikannya pendekatan yang direkomendasikan untuk lingkungan produksi yang mengutamakan keamanan.

Keuntungan Mode Rootless

  • Sama sekali tidak memerlukan hak istimewa root
  • Risiko keamanan berkurang secara signifikan
  • Risiko kompromi host dari dalam container lebih rendah

Langkah Instalasi

Pertama, instal paket dependensi yang diperlukan:

# Ubuntu/Debian
sudo apt-get install -y uidmap dbus-user-session

# CentOS/RHEL
sudo yum install -y shadow-utils fuse-overlayfs

Selanjutnya, jalankan script setup mode Rootless:

# Hentikan Docker yang ada (rootful)
sudo systemctl disable --now docker.service docker.socket

# Instal mode Rootless
dockerd-rootless-setuptool.sh install

Atur variabel lingkungan:

# Tambahkan ke ~/.bashrc atau ~/.zshrc
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
# Terapkan pengaturan
source ~/.bashrc

# Verifikasi berfungsi
docker run hello-world

Catatan Penting

  • Mode Rootless memiliki beberapa keterbatasan (mengikat port istimewa 80/443, driver penyimpanan tertentu, dll.)
  • Image dan volume yang dibuat dengan hak istimewa root tidak bisa digunakan secara langsung
  • Konfigurasi jaringan mungkin berbeda dari mode standar

Cara Mencegah Error Ini

Lakukan langkah-langkah pencegahan berikut untuk menghindari error permission Docker.

1. Konfigurasi Pengaturan Grup Segera Setelah Instalasi Docker

Selesaikan penambahan grup docker sebelum menjalankan perintah pertama setelah menginstal Docker. Sertakan ini dalam dokumentasi setup atau script Anda untuk setup yang efisien setiap kali.

# Contoh script setup post-instalasi
#!/bin/bash
sudo groupadd docker 2>/dev/null
sudo usermod -aG docker $USER
echo "Silakan logout dan login kembali"

2. Otomatisasi dengan Ansible atau Shell Script

Saat mengotomatisasi pengembangan tim atau pembangunan server, sertakan instalasi Docker dan konfigurasi grup dalam script otomatisasi Anda.

3. Verifikasi Pengaturan Permission Pipeline CI/CD

Untuk GitHub Actions, GitLab CI, Jenkins, dll., verifikasi bahwa permission akses socket Docker telah dikonfigurasi dengan benar. Banyak platform CI/CD memerlukan pengaturan khusus untuk penggunaan Docker.

4. Periksa Status Layanan Docker Secara Berkala

# Aktifkan auto-start Docker
sudo systemctl enable docker

# Periksa status layanan Docker
sudo systemctl status docker

5. Jangan Pernah Menggunakan chmod 666

Anda mungkin menemukan chmod 666 /var/run/docker.sock disarankan sebagai “solusi” di internet, tetapi ini sangat berbahaya dari sudut pandang keamanan. Ini memberikan semua pengguna akses ke daemon Docker, yang secara efektif memberikan hak istimewa root kepada setiap pengguna. Jangan pernah gunakan ini di lingkungan produksi.

Ringkasan

Error Docker “Got permission denied while trying to connect to the Docker daemon socket” adalah error yang sangat umum yang ditemui oleh hampir semua pengguna Linux yang mulai menggunakan Docker. Namun, dengan pemahaman yang tepat tentang penyebab dan solusinya, error ini bisa diselesaikan dalam hitungan menit.

Poin-poin Kunci:
Direkomendasikan: Tambahkan pengguna ke grup docker dengan sudo usermod -aG docker $USER lalu logout & login kembali
Sementara: Gunakan sudo docker untuk eksekusi perintah langsung
Fokus keamanan: Pertimbangkan mode Rootless Docker

Jika masalah tetap ada, periksa hal-hal berikut:
1. Apakah layanan Docker berjalan? (sudo systemctl status docker)
2. Apakah permission file socket benar? (ls -la /var/run/docker.sock)
3. Apakah pengaturan SELinux/AppArmor mengganggu?

Jika masih tidak bisa diselesaikan, kami sarankan untuk bertanya di Docker Community Forums atau Stack Overflow dengan detail lingkungan Anda (OS, versi Docker, pesan error lengkap).

Referensi

コメント

タイトルとURLをコピーしました