Tidak Dapat Terhubung ke Docker Daemon di ‘unix: ///var/run/docker.sock’
Docker menjadi semakin populer dengan kemampuannya untuk membuat, menyebarkan, dan menjalankan aplikasi menggunakan kontainer dengan mudah. Penampung memungkinkan pengembang untuk mengemas aplikasi dengan semua pustaka dan dependensinya sebelum menerapkannya sebagai satu paket lengkap. Menginstal Docker di Linux relatif mudah. Yang perlu Anda lakukan hanyalah menjalankan beberapa perintah di Terminal, dan Anda siap melakukannya.
Namun, ini mungkin tidak sama untuk semua pengguna, bahkan setelah penginstalan berhasil. Salah satu kesalahan yang paling umum muncul adalah:Tidak dapat terhubung ke daemon Docker di (unix: ///var/run/docker.sock. Apakah daemon buruh pelabuhan sedang berjalan?) Error ini bisa muncul saat menjalankan berbagai perintah buruh pelabuhan seperti docker run, docker info, docker pull, docker stop, dll.
Apa yang menyebabkan Kesalahan: Tidak Dapat Terhubung ke Docker Daemon?
Setelah menerima banyak keluhan pengembang, kami memutuskan untuk menyelami dan memberikan solusi yang efektif. Beberapa alasan yang memicu kesalahan ini meliputi:
- Daemon Docker tidakberlari.
- Docker tidakmenutup rapi.
- Kurangnyahak akses root untuk memulai layanan buruh pelabuhan.
Sekarang setelah Anda memiliki pemahaman dasar tentang penyebab masalah, mari kita lihat berbagai solusi yang tersedia untuk Anda.
Solusi 1: Mulai layanan Docker dengan systemctl
Jika Anda baru saja menyelesaikan penginstalan baru Docker di Ubuntu atau me-reboot PC Anda, ada kemungkinan besarLayanan Docker aku stidak berlari. Docker daemon (dockerd) adalah layanan sistem untuk buruh pelabuhan. Layanan ini menangani berbagai objek Docker seperti gambar, kontainer, jaringan, dan volume serta mendengarkan permintaan API Docker.
Perintah Systemctl datang untuk menggantikan sistem init SysV lama, dan itumengelola layanan systemd berjalan pada sistem Linux. Jika Anda tidak memiliki systemctl di sistem Anda, jangan khawatir; menggunakanlayanan perintah seperti yang dijelaskan di bawah ini.
catatan: Metode ini hanya berfungsi untuk pengguna yang menginstal Docker dengan pengelola paket APT. Jika Anda menginstal Docker melaluiJEPRET, mengacu padaSolusi 5di bawah.
- Buka Terminal dan jalankan perintah pertama -buka kedok buruh pelabuhan.
sudo systemctl membuka kedok buruh pelabuhan
Jika kita mencoba memulai layanan buruh pelabuhan saat buruh pelabuhan disamarkan, kita mungkin menghadapi kesalahan 'Gagal memulai buruh pelabuhan.service: Unit disembunyikan.' Mask dapat dianggap sebagai versi penonaktifan yang lebih kuat. Ketika file unit ditutup-tutupi, unit tersebut ditautkan ke 'dev / null.' Anda dapat membuat daftar status semua file unit dengan perintah - '$ systemctl daftar-unit-file‘
2. Setelah unit buruh pelabuhan tersebut membuka kedok, kita dapat mulai buruh pelabuhan tersebutdaemon dengan perintah systemctl. Itu buruh pelabuhan daemon mengelola objek buruh pelabuhan seperti Gambar, Kontainer, dan permintaan API Docker. Jalankan perintah di bawah ini pada baris perintah.
systemctl mulai buruh pelabuhan
3. Kepada memeriksa baik jasa buruh pelabuhan aktif dan berjalan. Kami akan menggunakanstatus systemctl perintah, yang menunjukkan status saat ini dari layanan tertentu. Jalankan perintah di bawah ini di Terminal Anda.
buruh pelabuhan status systemctl
Dari gambar di atas, kita bisa melihat ituburuh pelabuhan aktif dan berjalan.
Solusi 2: Bersihkan 'Penarikan Docker yang Gagal' dan Mulai layanan Docker
Ada kasus di mana Anda mungkin secara tidak terduga menutup Docker saat menarik container. Situasi seperti itu akan menutupi docker.service danburuh pelabuhan .socketfile. Docker.socket adalah file yang terletak di '/var/run/docker.sock' dan digunakan untuk berkomunikasi dengan daemon Docker. Kami perlumembuka kedok file dua unit - docker .service dan docker.daemon sebelumnyamelanjutkan untukmulai buruh pelabuhan.
- LuncurkanTerminal dan jalankanperintah di bawah:
systemctl buka kedok docker.service systemctl buka kedok docker.socket systemctl mulai docker.service
Jika Anda masih mengalami kesalahan bahkan setelah menjalankan perintah di bawah ini, kami perlu melakukannya menghapus file di Containerd direktori sebelum memulai Docker lagi. Containerd adalah fitur yang diperkenalkan di Docker 1.11 dan digunakan untuk mengelola siklus hidup image Docker.
2. Buka Terminal dan jalankan perintah di bawah ini. Pastikan Anda mengetahui kata sandi root karena kita akan membutuhkan hak yang lebih tinggi untuk menjalankan perintah.
sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start
Solusi 3: Mulai Layanan Dockerd (Docker Daemon)
Dockerd adalah daemon Docker yang mendengarkan API Docker dan mengelola berbagai objek Docker. Dockerd dapat digunakan sebagai alternatif dari perintah '$ systemctl mulai buruh pelabuhan'Yang juga digunakan untuk memulai daemon Docker.
- Buka Terminal dan mulai dockerd dengan menjalankan perintah di bawah ini:
sudo dockerd
Solusi 4: Mulai Docker dengan perintah Service
Jika Anda menggunakan Sistem init SysV, maka perintah systemctl tidak akan berfungsi untuk Anda. Kami perlu menggunakan perintah layanan untuk mulai daemon buruh pelabuhan.
- luncurkan Terminal dan menjalankan perintah di bawah ini:
sudo service --status-all sudo service docker start
Solusi 5: Mulai Layanan Docker dengan Snap
Jika Anda menginstal Docker dengan ekstensiManajer paket jepret, Anda perlu menggunakan perintah snap untuk mengelola daemon buruh pelabuhan.
Umumnya, Snap mengelola layanan mereka secara otomatis. Namun, dalam situasi seperti kesalahan ini, diperlukan intervensi manual. Beberapa argumen yang dapat Anda gunakan dengan perintah snap termasuk stop, start, dan restart. Dalam kasus kami, kami akan menggunakan parameter start.
- Buka Terminal dan jalankan perintah di bawah ini untukmulai Docker.
sudo snap mulai buruh pelabuhan
2. Jalankan perintah di bawah ini untuk memeriksa apakah itu Layanan Docker dimulai.
layanan sudo snap
Itu akan daftar semua berjalan layanan jepret.
Jika perintah di atas tidak berhasil untuk Anda, coba menghubungkan buruh pelabuhan: colokan rumah karena tidak terhubung otomatis secara default. Setelah selesai, Mulailah itu Layanan Docker.
3. Luncurkan Terminal dan jalankan perintah di bawah ini:
sudo snap menghubungkan buruh pelabuhan: rumah: rumah sudo snap mulai buruh pelabuhan
Solusi 6: Mulai Docker untuk pengguna tanpa Root P.rivileges
Kesalahan mungkin juga timbul karena kurangnya hak istimewa yang lebih tinggi dan pengguna tidak memiliki akses ke 'unix: ///var/run/docker.sock.' Untungnya ada solusi. Kami akan mengekspor variabel Docker Host ke localhost melalui port 2375.
- Buka Terminal dan jalankan perintah di bawah ini:
ekspor DOCKER_HOST = tcp: // localhost: 2375
Solusi 7: Instal ulang Docker
Jika solusi di atas tidak menyelesaikan error, besar kemungkinan Anda mengalami error penginstalan. Untuk menginstal Docker dengan benar di sistem Linux Anda, ikuti langkah-langkah dari situs resmi Docker.