Cara Memecahkan Masalah Kesalahan \.

\u003cimg data-pagespeed-no-defer/\u003e.

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, bagikan 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 ini:.

$ docker run hello-world:latestCannot connect to the Docker daemon at unix:///var/run/docker.sockIs the docker daemon running.

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

1. Periksa Layanan Docker Daemon Sedang Berjalan.

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

$ sudo systemctl status dockerdocker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service. enabled. vendor preset: enabled) Active: inactive (dead)

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 status berhenti setelah Anda me-reboot mesin Anda. Anda dapat mengatasi ini dengan mengaktifkan layanan, memungkinkan systemd untuk memulainya secara otomatis:.

$ sudo systemctl aktifkan buruh pelabuhan\r\n.

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

dua. Mulai Daemon Secara Manual.

Anda mungkin 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 buruh pelabuhan\r\n. 303428726+01:00) Memulai.

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

3. Memeriksa CLI Apakah Menargetkan Daemon yang Benar.

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

$ docker menjalankan hello-world:latest\r\n. 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 Docker CLI yang benar untuk koneksi daemon yang ingin Anda gunakan:.

$ konteks buruh pelabuhan gunakan default.

Anda dapat membuat daftar semua konteks yang tersedia dan titik akhir daemon yang terhubung dengannya dengan perintah ls konteks:.

$ docker context lsNAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock

Konteks yang dipilih saat ini disorot dengan tanda bintang.

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

$ ekspor DOCKER_HOST\u003d1. dua. 3. 4\r\n. dua. 3. 4:2375\r\n. Untuk menggunakan konteks, atur flag --context global, atau hapus variabel lingkungan DOCKER_HOST.

Kehadiran 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. dua. 3. 4:2375.

Masalah ini dapat diselesaikan dengan menghapus variabel DOCKER_HOST:.

$ ekspor DOCKER_HOST\u003d.

Docker sekarang akan menggunakan titik akhir yang dikonfigurasi oleh konteks aktif Anda. Ini akan menjadi soket Unix lokal default di /var/run/docker. kaus kaki kecuali Anda secara manual mengatur konteks khusus.

$ docker context lsNAME DESCRIPTION DOCKER ENDPOINT default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock 4. Permissions Issues

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

$ docker run hello-world:latestGot permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

Ini terjadi ketika akun pengguna Unix Anda 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 dapat diterapkan. Anda sekarang seharusnya dapat menjalankan perintah buruh pelabuhan tanpa mengalami masalah izin.

Ringkasan.

Tidak dapat terhubung ke daemon Docker muncul ketika CLI Docker tidak dapat berkomunikasi dengan instance 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 soket Dockers.

Komentar