Cara Memecahkan Kesalahan “Tidak Dapat Terhubung ke Docker Daemon”

  • Post author:
  • Post category:Tutorial

Docker adalah salah satu platform terkemuka untuk membangun dan menjalankan wadah perangkat lunak. Muncul dengan semua yang Anda butuhkan untuk menggunakan wadah pada satu host atau beberapa node terdistribusi dalam mode Swarm.

Docker memiliki arsitektur berbasis daemon. Perangkat lunak yang bertanggung jawab untuk membuat dan memulai container tidak bergantung pada proses CLI yang menerima perintah Anda. Ini berarti Anda akan melihat kesalahan di CLI jika Anda mencoba menjalankan perintah tanpa koneksi daemon yang aktif. Dalam artikel ini, kami akan membagikan beberapa metode untuk memecahkan masalah pesan yang membuat frustrasi ini.

Gejala Masalah

CLI Docker bergantung pada koneksi daemon yang tersedia. Ini berinteraksi dengan daemon menggunakan panggilan API. Ketika daemon yang dikonfigurasi tidak dapat diakses, perintah docker seperti docker ps, docker run, dan docker build akan menampilkan pesan kesalahan yang mirip dengan yang ini:

$ docker run hello-world:latest Tidak dapat terhubung ke daemon Docker di unix:///var /run/docker.sock Apakah daemon buruh pelabuhan berjalan?

Ini menunjukkan bahwa CLI mencoba berkomunikasi dengan daemon Docker menggunakan soket Unix /var/run/docker.sock. Soket tidak terbuka sehingga koneksi gagal.

1. Periksa Apakah Layanan Daemon Docker Berjalan

Daemon Docker biasanya dikelola oleh layanan systemd yang secara otomatis memulai Docker setelah host Anda melakukan boot ulang. Anda dapat memulai pemecahan masalah dengan memeriksa apakah layanan ini sedang berjalan:

$ sudo systemctl status docker docker.service – Mesin Penampung Aplikasi Docker Dimuat: dimuat (/lib/systemd/system/docker.service; diaktifkan; preset vendor: diaktifkan) Aktif: tidak aktif (mati)

Layanan harus melaporkan Aktif: aktif (berjalan) jika daemon sedang berjalan. Contoh di atas menunjukkan tidak aktif (mati) yang berarti daemon telah berhenti.

Mulai Docker menggunakan perintah berikut:

$ sudo systemctl start docker

Sekarang Anda harus dapat menjalankan perintah CLI buruh pelabuhan dengan sukses.

Anda mungkin menemukan bahwa Docker tetap dalam keadaan berhenti setelah Anda me-reboot mesin Anda. Anda dapat mengatasi ini dengan mengaktifkan layanan, memungkinkan systemd untuk memulainya secara otomatis:

$ sudo systemctl enable docker $ sudo systemctl daemon-reload

Perintah daemon-reload menginstruksikan systemd untuk memuat ulang konfigurasinya untuk menerapkan perubahan.

2. Mulai Daemon Secara Manual

Anda terkadang menggunakan sistem yang tidak menginstal layanan Docker. Anda dapat memulai daemon Docker secara manual menggunakan perintah dockerd. Ini biasanya perlu dijalankan sebagai root.

$ sudo dockerd INFO[2022-06-29T15:12:49.303428726+01:00] Memulai up

Docker akan tetap dapat diakses selama perintah berjalan. Gunakan Ctrl+C untuk menghentikan daemon.

3. Memeriksa CLI Apakah Menargetkan Daemon

yang BenarMasalah dapat terjadi ketika CLI mencoba terhubung ke instance daemon Docker jarak jauh. Ini biasanya penyebabnya ketika pesan kesalahan menunjukkan alamat TCP:

$ docker run hello-world:latest Tidak dapat terhubung ke daemon Docker di tcp:///0.0.0.0:2375

Dalam contoh ini, CLI buruh pelabuhan mencoba menghubungi daemon Docker di 0.0.0.0:2375 menggunakan TCP, bukan soket Unix Docker lokal. Ini akan gagal jika dukungan TCP daemon Docker dinonaktifkan atau host yang ditentukan tidak dapat diakses di jaringan.

Anda biasanya dapat menyelesaikan ini dengan beralih ke konteks CLI Docker yang benar untuk koneksi daemon yang ingin Anda gunakan:

$ konteks docker use default

Anda dapat daftar semua konteks yang tersedia dan titik akhir daemon yang mereka hubungkan dengan konteks ls perintah:

$ docker konteks ls NAMA DESKRIPSI DOCKER ENDPOINT default * Konfigurasi berbasis DOCKER_HOST saat ini unix:///var/run/docker.sock

Konteks yang dipilih saat ini disorot dengan asterisk.

Nilai tak terduga di kolom ENDPOINT DOCKER biasanya disebabkan oleh variabel lingkungan DOCKER_HOST yang disetel. Anda akan melihat peringatan ketika ini terjadi:

$ export DOCKER_HOST=1.2.3.4 $ docker konteks ls NAMA DESKRIPSI DOCKER ENDPOINT default * Konfigurasi berbasis DOCKER_HOST saat ini tcp://1.2.3.4:2375 Peringatan: variabel lingkungan DOCKER_HOST menimpa konteks aktif. Untuk menggunakan konteks, setel flag –context global, atau hapus variabel lingkungan DOCKER_HOST.

Keberadaan variabel lingkungan DOCKER_HOST di shell Anda mengesampingkan titik akhir yang ditentukan oleh konteks yang Anda pilih. Dalam contoh ini, perintah buruh pelabuhan akan selalu menargetkan instance daemon di tcp://1.2.3.4:2375.

Masalah ini dapat diselesaikan dengan menghapus variabel DOCKER_HOST:

$ export DOCKER_HOST=

Docker sekarang akan menggunakan titik akhir yang dikonfigurasi oleh konteks aktif Anda . Ini akan menjadi soket Unix lokal default di /var/run/docker.sock kecuali jika Anda secara manual menyiapkan konteks kustom.

$ docker konteks ls NAMA DESKRIPSI DOCKER ENDPOINT default * Konfigurasi berbasis DOCKER_HOST saat ini unix:///var/ jalankan/docker.sock4. Masalah Izin

Izin pengguna yang salah pada soket Docker adalah penyebab umum lainnya dari masalah koneksi daemon. Masalah seperti ini biasanya menampilkan pesan kesalahan yang sedikit berbeda:

$ docker run hello-world:latest Mendapat izin ditolak saat mencoba menyambung ke soket daemon Docker di unix:///var/run/docker.sock

Ini terjadi ketika Unix Anda akun pengguna tidak memiliki izin untuk berinteraksi dengan soket yang mengekspos Docker API. Menambahkan diri Anda ke grup buruh pelabuhan adalah cara praktik terbaik untuk menyelesaikan masalah ini:

$ sudo usermod -aG buruh pelabuhan $USER

Anda harus membuka jendela shell baru atau keluar dan masuk kembali agar perubahan ini diterapkan. Anda sekarang seharusnya dapat menjalankan perintah buruh pelabuhan tanpa mengalami masalah izin.

Summary

“Tidak dapat terhubung ke daemon Docker” muncul ketika CLI Docker tidak dapat berkomunikasi dengan instans daemon Docker menggunakan konfigurasi Anda saat ini. Ini sering kali karena layanan daemon Docker telah dihentikan atau dinonaktifkan. Anda juga dapat mencoba menyambung ke host Docker jarak jauh yang offline.

Anda sekarang harus mengetahui kemungkinan penyebab masalah ini dan cara umum untuk menyelesaikannya. Pecahkan masalah kesalahan dengan memeriksa pengaturan daemon Docker Anda, memulai ulang layanan Docker, dan memastikan akun pengguna Anda memiliki izin untuk berinteraksi dengan socket.

Docker

Itulah berita seputar Cara Memecahkan Kesalahan “Tidak Dapat Terhubung ke Docker Daemon”, semoga bermanfaat. Disadur dari HowToGeek.com.