Seluruh section ini berjalan mulus di mesin Budi dan Siti, tetapi dunia nyata jarang sekooperatif itu. Daemon mendadak menolak menyala setelah suntikan daemon.json, pesan permission denied muncul padahal grup sudah ditambahkan, WSL menolak bangun dengan kode galat berbilang hex, dan disk server penuh diam-diam oleh image lama yang terlupakan. Kabar baiknya: hampir semua masalah instalasi Docker mengelompok ke dalam delapan pola yang sama, dan masing-masing punya jalur diagnosis yang bisa dipelajari sampai jadi refleks. Chapter penutup ini merangkum kedelapan pola tersebut dalam satu tabel, lalu membedah empat kasus yang paling banyak menyita waktu, lengkap dengan keluaran asli perintah diagnosisnya.
Delapan Gejala Paling Umum #
Tabel berikut adalah peta lengkapnya: baca kolom gejala, cocokkan dengan yang kita alami, lalu ikuti petunjuk penyebab dan solusinya. Empat gejala yang paling sering menghabiskan waktu — daemon mati, izin socket, disk penuh, dan service masked — dibedah tuntas pada bagian-bagian berikutnya:
| Gejala | Penyebab paling umum | Solusi |
|---|---|---|
Cannot connect to the Docker daemon. Is the docker daemon running on this host? | Daemon berhenti atau gagal menyala, sering karena kesalahan daemon.json | systemctl status docker lalu journalctl -u docker, perbaiki akar masalahnya, mulai ulang layanan |
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock | Pengguna belum terdaftar di grup docker | sudo usermod -aG docker $USER lalu logout dan login kembali |
WSL gagal dengan galat 0x80370102 | Virtualisasi tidak aktif atau fitur WSL belum menyala | Aktifkan virtualisasi di BIOS atau UEFI, jalankan wsl --update, pastikan VirtualMachinePlatform aktif |
| Docker Desktop gagal menyala dengan pesan VM not enabled | Fitur virtualisasi platform Windows mati | Aktifkan VirtualMachinePlatform lewat dism lalu restart mesin |
no space left on device saat pull, build, atau run | Image lama, build cache, dan log menumpuk memenuhi disk | docker system df lalu bersihkan yang tidak terpakai; aktifkan rotasi log |
| Instalasi paket Docker bentrok dengan paket lama | Paket containerd atau runc dari repositori distro masih terpasang | Copot paket konflik lalu ulangi instalasi dari repositori resmi |
| Container saling tidak bisa terhubung lewat nama | Container berada di default bridge yang tanpa DNS embedded | Buat user-defined network dan jalankan container di dalamnya |
docker.service tidak bisa dinyalakan dan statusnya masked | Unit layanan sengaja dimatikan paksa oleh administrator atau skrip | sudo systemctl unmask docker.service lalu jalankan layanan |
Bedah Kasus Daemon yang Mati #
Gejala ini paling sering muncul dan paling mudah dipatahkan jika kita tahu urutannya. Semuanya bermula dari pesan klasik saat menjalankan perintah apa pun:
$ docker psOutput yang Dihasilkan:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?Langkah diagnosis pertama selalu sama: tanyakan keadaan layanan kepada systemd:
$ systemctl status dockerOutput yang Dihasilkan:
× docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Tue 2026-10-13 10:02:15 WIB; 31s ago
Duration: 1.842s
Process: 31244 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 31244 (code=exited, status=1/FAILURE)
...Tanda × bersama Active: failed (Result: exit-code) menegaskan daemon sudah mencoba menyala lalu menyerah — bukan sekadar tidak pernah dinyalakan. Langkah kedua: minta jurnal sistem menceritakan kalimat terakhir daemon sebelum menyerah:
$ sudo journalctl -u docker --no-pager -n 20Output yang Dihasilkan:
Okt 13 10:02:13 server systemd[1]: Starting docker.service - Docker Application Container Engine...
Okt 13 10:02:15 server dockerd[31244]: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '}' looking for beginning of object key string
Okt 13 10:02:15 server systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Okt 13 10:02:15 server systemd[1]: docker.service: Failed with result 'exit-code'.Baris kedua jurnal tersebut mengungkap tersangka utamanya: daemon.json tidak dapat diurai karena ada karakter yang tidak pada tempatnya — koma menempel di ujung blok adalah kecelakaan yang paling lazim. Perhatikan pula baris ExecStart=/usr/bin/dockerd -H fd:// pada keluaran status di atas: inilah argumen yang bentrok dengan kunci hosts di daemon.json sebagaimana kita bahas pada Chapter Konfigurasi Docker Engine. Setelah tersangkanya jelas, perbaikannya tinggal urutan singkat:
- Buka
/etc/docker/daemon.jsondan perbaiki kesalahan sintaksnya — hapus koma ekstra di ujung blok yang terakhir. - Validasi berkasnya tanpa memulai ulang daemon:
sudo dockerd --validate --config-file /etc/docker/daemon.json— ulangi sampai keluarconfiguration OK. - Mulai ulang layanan:
sudo systemctl restart docker. - Pastikan daemon benar-benar hidup:
systemctl status dockermenunjukkanactive (running).
Bedah Kasus Permission Denied pada Socket #
Gejala kedua klasiknya berbunyi demikian — dan ingat, daemon di sini sama sekali sehat:
$ docker psOutput yang Dihasilkan:
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: ...Bagian akhir pesan yang memuat alamat internal galat dipotong agar ringkas. Diagnosisnya satu langkah: cocokkan identitas kita dengan penjaga pintu:
$ id -nG
$ ls -l /var/run/docker.sockOutput yang Dihasilkan:
budi sudo
srw-rw---- 1 root docker 0 Okt 13 09:41 /var/run/docker.sockDua baris tersebut bercerita lengkap: grup yang aktif pada sesi Budi hanya budi dan sudo, sementara socket menuntut keanggotaan grup docker — persis mekanisme yang kita bedah pada Chapter Mengatur Akses Docker. Perbaikannya mengikuti temuan tersebut:
- Daftarkan pengguna ke grup docker:
sudo usermod -aG docker $USER. - Tutup seluruh sesi lalu login kembali — keanggotaan grup baru hanya berlaku pada sesi login yang baru;
newgrp dockerboleh dipakai sebagai jembatan sementara. - Ulangi pemeriksaan
id -nG— namadockerkini harus tampil di daftar grup. - Uji akses tanpa sudo:
docker pskini menampilkan header tabel kontainer tanpa pesan izin apa pun.
Bedah Kasus Ruang Disk Habis #
Gejala ketiga datang dari arah yang tidak curiga: operasi pull atau build biasa tiba-tiba gagal dengan pesan singkat nan kejam:
$ docker pull nginx:1.29-alpineOutput yang Dihasilkan:
1.29-alpine: Pulling from library/nginx
...
docker: write /var/lib/docker/tmp/GetImageBlob918273645012: no space left on deviceDiagnosisnya dua arah — berapa sisa ruang di disk, dan siapa yang memakannya:
$ df -h /var/lib/docker
$ docker system dfOutput yang Dihasilkan:
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 38G 1.2G 97% /
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 18 3 6.12GB 4.47GB (73%)
Containers 6 1 512MB 128MB (25%)
Local Volumes 5 2 894MB 410MB (45%)
Build Cache 102 0 2.33GB 2.33GBDua keluaran tersebut saling melengkapi: disk partisi sudah terisi 97 persen, dan docker system df merinci pelakunya — 18 image dengan hanya 3 yang aktif dipakai, ditambah build cache 2.33GB yang tidak dipakai satu pun. Kolom RECLAIMABLE menunjukkan berapa yang bisa direbut kembali dari masing-masing jenis. Pembersihannya mengikuti urutan dari yang paling aman:
- Bersihkan build cache yang tidak terpakai:
docker builder prune— pada contoh di atas, langkah ini saja sudah membebaskan 2.33GB. - Hapus image yang tidak dipakai container mana pun:
docker image prune— versi dengan flag-alebih agresif karena turut membuang image yang tidak direferensikan container mana pun; pastikan image penting sudah ter-push ke registry sebelumnya. - Aktifkan rotasi log pada
daemon.jsonsebagaimana dibahas pada Chapter Konfigurasi Docker Engine — tanpamax-sizedanmax-file, log container akan mengulangi bencana ini secara berkala. - Bila kebutuhan memang melampaui kapasitas disk, pindahkan
data-rootke partisi data yang lebih besar atau tambah kapasitas disknya. - Pantau ulang dengan
docker system dfdandf -h /var/lib/dockersampai angka Use% kembali sehat.
Bedah Kasus Service yang Dimatikan Paksa #
Gejala keempat paling membingungkan karena pesan kegagalannya nyaris tidak menyebut Docker:
$ sudo systemctl start dockerOutput yang Dihasilkan:
Failed to start docker.service: Unit docker.service is masked.Status masked berarti unit layanan ditautkan ke /dev/null — sistem sengaja melarangnya dinyalakan, biasanya karena kebijakan pengerasan keamanan administrator atau sisa skrip lama yang lupa dibuka. Kondisinya terlihat jelas pada status layanan:
$ systemctl status dockerOutput yang Dihasilkan:
× docker.service
Loaded: masked (Reason: Unit docker.service is masked.)
Active: inactive (dead)Berbeda dengan tiga kasus sebelumnya, di sini tidak ada yang salah dengan instalasi Docker — yang perlu dipulihkan adalah unit systemd-nya:
- Buka penutupnya:
sudo systemctl unmask docker.service. - Jalankan layanan:
sudo systemctl start docker. - Aktifkan startup otomatis:
sudo systemctl enable docker. - Selidiki siapa yang memasang masker — bila kebijakan keamanan tim yang mengharuskannya, bicaralah sebelum menyalakannya kembali; melepas masker tanpa izin sama saja dengan menembak kebijakan secara diam-diam.
Dengan delapan pola masalah di tangan dan empat diagnosis lengkap di kepala, kita menutup Section Instalasi dan Konfigurasi dengan bekal yang lengkap: Docker terpasang di Linux, Windows, dan macOS; daemon dan CLI terkonfigurasi sesuai kebutuhan; instalasi terverifikasi sehat; akses dikelola dengan sadar; dan kerusakan punya peta penanganannya. Seluruh perbekalan itu menyiapkan kita untuk babak berikutnya yang jauh lebih menyenangkan: menguasai perintah-perintah Docker itu sendiri. Section Dasar Docker CLI menanti, dibuka oleh Chapter Struktur Perintah Docker yang mengajarkan membaca perintah docker apa pun tanpa membuka dokumentasi terlalu sering.
Referensi #
- Linux post-installation steps — penanganan masalah umum pasca instalasi termasuk izin socket.
- Konfigurasi daemon Docker — rujukan resmi daemon.json untuk mencegah dan memperbaiki galat konfigurasi.
- Docker Desktop — catatan galat khas WSL 2 dan backend virtualisasi pada dokumentasi resmi.