Docker daemon is not running: Penyebab Teknis dan Solusi Paling Efektif
Error Docker daemon is not running muncul ketika perintah Docker dijalankan tetapi klien Docker gagal berkomunikasi dengan proses inti Docker Engine. Pada kondisi ini, Docker CLI tetap tersedia, namun seluruh operasi seperti docker build, docker run, atau docker ps tidak dapat dieksekusi karena tidak ada daemon yang aktif untuk memproses permintaan tersebut.
Masalah ini tergolong sangat umum dan dialami baik oleh developer pemula maupun engineer berpengalaman. Error sering muncul setelah restart sistem, update Docker, perubahan konfigurasi sistem operasi, atau saat bekerja di lingkungan baru seperti server bare metal, VM, atau pipeline CI/CD. Dalam banyak kasus, Docker sebenarnya terpasang dengan benar, tetapi daemon tidak berjalan atau tidak dapat diakses oleh pengguna.
Secara teknis, error ini menandakan kegagalan komunikasi melalui Docker socket (/var/run/docker.sock) atau kegagalan service Docker Engine untuk melakukan inisialisasi. Penyebabnya bisa berasal dari layer sistem operasi, permission, dependency runtime container, hingga konflik konfigurasi yang menghentikan proses dockerd.
Penjelasan Error Docker daemon is not running
Error Docker daemon is not running terjadi pada tahap awal eksekusi perintah Docker, tepat setelah Docker CLI mencoba melakukan handshake dengan Docker daemon. Docker CLI berfungsi sebagai client, sedangkan Docker daemon (dockerd) bertindak sebagai server yang mengelola container, image, network, dan volume.
Ketika daemon tidak berjalan atau tidak dapat diakses, Docker CLI akan mengembalikan error seperti:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Pada sistem Linux, error ini hampir selalu berkaitan dengan service docker.service yang tidak aktif atau gagal start. Pada macOS dan Windows, error umumnya muncul karena Docker Desktop belum berjalan atau gagal memulai backend virtualization seperti HyperKit, WSL2, atau Hyper-V.
Lingkungan yang paling sering terdampak meliputi:
Linux server (Ubuntu, Debian, CentOS, RHEL)
macOS dengan Docker Desktop
Windows dengan Docker Desktop dan WSL2
Environment CI/CD berbasis container runner
VM cloud dengan systemd yang tidak dikonfigurasi dengan benar
Penyebab Utama Docker daemon is not running
Docker service tidak berjalan
Penyebab paling umum adalah Docker daemon tidak aktif. Pada Linux, Docker berjalan sebagai service systemd. Jika service ini berhenti, crash, atau tidak pernah dijalankan setelah boot, maka daemon tidak tersedia untuk menerima koneksi.
Kondisi ini sering terjadi setelah reboot server, instalasi Docker tanpa auto-start, atau kegagalan start akibat dependency yang belum siap.
Docker gagal start karena error konfigurasi
Docker daemon dapat gagal berjalan karena konfigurasi tidak valid pada file /etc/docker/daemon.json. Kesalahan format JSON, opsi runtime yang tidak tersedia, atau konfigurasi registry yang salah akan menyebabkan dockerd berhenti saat startup.
Dalam praktik, error ini sering muncul setelah menambahkan custom runtime, mirror registry, atau pengaturan insecure registry tanpa validasi.
Permission ke docker.sock tidak valid
Docker CLI berkomunikasi dengan daemon melalui socket Unix /var/run/docker.sock. Jika permission socket tidak mengizinkan user saat ini, maka akan muncul error yang sama meskipun daemon sebenarnya berjalan.
Masalah ini umum terjadi ketika Docker dijalankan oleh user non-root yang belum tergabung dalam grup docker.
Docker Desktop tidak berjalan (macOS dan Windows)
Pada macOS dan Windows, Docker tidak berjalan sebagai service systemd. Docker daemon dijalankan oleh Docker Desktop. Jika aplikasi Docker Desktop belum dibuka, crash, atau gagal start backend virtualization, maka Docker CLI tidak dapat menemukan daemon.
Kondisi ini sering terjadi setelah update OS, update Docker Desktop, atau konflik dengan WSL2 dan Hyper-V.
Konflik runtime container atau kernel
Docker bergantung pada fitur kernel seperti cgroups, namespaces, dan overlay filesystem. Jika kernel tidak mendukung fitur tersebut atau modul kernel gagal dimuat, Docker daemon akan gagal start.
Kasus ini sering ditemukan pada custom kernel, VPS murah, atau environment nested virtualization.
Cara Memverifikasi Penyebab Docker daemon is not running
Memeriksa status Docker service di Linux
Langkah pertama adalah memastikan apakah Docker service berjalan:
systemctl status docker
Jika status menunjukkan inactive, failed, atau dead, berarti daemon tidak berjalan. Output log pada bagian bawah biasanya menunjukkan alasan kegagalan.
Mencoba menjalankan Docker service secara manual
Untuk memastikan apakah Docker dapat dijalankan, gunakan:
sudo systemctl start docker
Jika perintah ini gagal, systemd akan menampilkan error awal yang mengindikasikan masalah konfigurasi atau dependency.
Menganalisis log Docker daemon
Log detail dapat diperiksa dengan:
journalctl -u docker --no-pager
Log ini penting untuk menemukan error parsing konfigurasi, kegagalan mount filesystem, atau konflik runtime.
Memeriksa file konfigurasi daemon.json
Validasi file konfigurasi Docker:
cat /etc/docker/daemon.json
Pastikan file memiliki format JSON yang valid dan tidak mengandung opsi eksperimental yang tidak didukung versi Docker yang digunakan.
Memverifikasi akses ke docker.sock
Periksa permission socket Docker:
ls -l /var/run/docker.sock
Jika owner adalah root:docker, maka user harus tergabung dalam grup docker untuk dapat mengaksesnya tanpa sudo.
Memeriksa Docker Desktop di macOS dan Windows
Pastikan Docker Desktop berjalan dan status menunjukkan “Docker Engine is running”. Pada Windows dengan WSL2, verifikasi juga dengan:
wsl --list --verbose
Pastikan distribusi default berjalan dan menggunakan WSL2.
Solusi Utama Docker daemon is not running
Menjalankan dan mengaktifkan Docker service
Pada Linux, solusi utama adalah menjalankan Docker daemon dan memastikan auto-start:
sudo systemctl start docker
sudo systemctl enable docker
Langkah ini memastikan Docker daemon aktif saat runtime dan otomatis berjalan setelah reboot.
Memperbaiki konfigurasi Docker daemon
Jika Docker gagal start karena konfigurasi, perbaiki atau hapus file konfigurasi bermasalah:
sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak
sudo systemctl restart docker
Setelah daemon berjalan normal, konfigurasi dapat ditambahkan kembali secara bertahap dengan validasi setiap perubahan.
Menambahkan user ke grup docker
Untuk mengatasi masalah permission:
sudo usermod -aG docker $USER
Logout dan login ulang diperlukan agar grup baru aktif. Solusi ini memungkinkan Docker CLI mengakses socket tanpa sudo.
Menjalankan Docker Desktop
Pada macOS dan Windows, solusi paling langsung adalah menjalankan ulang Docker Desktop. Jika Docker Desktop gagal start, lakukan restart sistem atau reinstall Docker Desktop versi terbaru yang kompatibel dengan OS.
Memastikan dependency kernel tersedia
Pada Linux server, pastikan modul kernel seperti overlay dan br_netfilter aktif:
lsmod | grep overlay
Jika tidak tersedia, kernel yang digunakan kemungkinan tidak kompatibel dengan Docker.
Solusi Alternatif Berdasarkan Lingkungan
Lingkungan CI/CD
Pada pipeline CI/CD, error ini sering muncul karena runner tidak memiliki Docker daemon. Solusinya adalah menggunakan Docker-in-Docker (DinD) atau runner dengan mode privileged.
Contoh pada GitLab CI:
services:
- docker:dind
Server production dengan systemd terbatas
Pada server minimal atau container-based OS, Docker daemon mungkin tidak tersedia. Alternatifnya adalah menggunakan container runtime lain seperti containerd secara langsung atau menggunakan platform orchestration yang sudah menyediakan runtime.
WSL2 di Windows
Jika Docker daemon tidak berjalan di WSL2, reset integrasi WSL di Docker Desktop dan pastikan distribusi Linux terdaftar sebagai default.
Kesalahan yang Sering Dilakukan Saat Memperbaiki Error
Kesalahan paling umum adalah menjalankan semua perintah Docker dengan sudo tanpa memahami akar masalah. Pendekatan ini hanya menutupi masalah permission dan tidak menyelesaikan daemon yang tidak berjalan.
Kesalahan lain adalah mengedit daemon.json tanpa validasi JSON, yang justru menyebabkan Docker gagal start total. Banyak pengguna juga menghapus Docker dan install ulang tanpa memeriksa log, padahal masalah sebenarnya hanya service yang tidak aktif.
Pada macOS dan Windows, pengguna sering mencoba menjalankan perintah Linux seperti systemctl, padahal Docker daemon dikelola sepenuhnya oleh Docker Desktop.
Pencegahan Docker daemon is not running di Masa Depan
Pastikan Docker diatur untuk auto-start setelah boot, terutama pada server production. Setiap perubahan konfigurasi Docker sebaiknya diuji dengan restart daemon dan analisis log sebelum diterapkan permanen.
Gunakan manajemen permission yang konsisten dengan menambahkan user ke grup docker dan hindari penggunaan sudo berlebihan. Pada Docker Compose dan Dockerfile, hindari asumsi bahwa Docker daemon selalu tersedia tanpa verifikasi environment.
Di lingkungan CI/CD, gunakan runner yang secara eksplisit mendukung Docker atau container runtime lain yang sesuai. Dokumentasikan dependensi kernel dan OS agar deployment di environment baru tidak menimbulkan error serupa.
Penutup
Error Docker daemon is not running bukanlah masalah instalasi semata, melainkan indikasi bahwa proses inti Docker Engine tidak tersedia atau tidak dapat diakses. Dengan memahami bagaimana Docker CLI berkomunikasi dengan daemon, menganalisis service, log, dan konfigurasi secara sistematis, masalah ini dapat diselesaikan secara cepat dan presisi. Pendekatan berbasis verifikasi teknis dan praktik operasional yang benar akan memastikan Docker berjalan stabil di berbagai lingkungan tanpa mengulang error yang sama.