Betulkan: Tidak Dapat Menyambung ke Docker Daemon



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Anda mungkin sangat keliru jika terminal Linux melemparkan ralat 'tidak dapat menyambung ke Docker daemon' kepada anda, kerana kemungkinan besar daemon Docker sudah berjalan ketika anda melihatnya. Walaupun anda ingin memastikannya, anda mungkin akan bingung apabila mengetahui bahawa ralat ini tidak ada kaitan dengan perkhidmatan yang tidak dimulakan. Kebanyakannya dilemparkan kepada pengguna yang belum menambahkan diri mereka ke kumpulan Docker.



Docker mengeluarkan kumpulan pengguna yang berasingan pada sistem Linux, dan mereka yang mempunyai akaun pengguna yang tidak ditambahkan kepadanya tidak akan dapat menyambung ke dalamnya. Perlu diingat bahawa menambahkan akaun pengguna ke kumpulan Docker adalah fungsi setara root kerana daemon selalu berjalan sebagai pengguna root. Ini mungkin dijangkakan pada sistem Pelayan Ubuntu pengguna tunggal, tetapi ia pasti menjadi sesuatu yang perlu diingat bagi mereka yang menjalankan Docker on Arch, Fedora atau Debian.



Kaedah 1: Memeriksa Status Perkhidmatan Docker

Walaupun sudah pasti, anda perlu memeriksa sama ada perkhidmatan Docker sedang dijalankan. Di tetingkap terminal, jalankan status systemctl docker.service sebagai pengguna biasa. Anda harus mendapatkan beberapa maklumat mengenai nombor PID yang diberikan oleh daemon Docker. Sekiranya tidak, anda perlu memulakan semula perkhidmatan.



Sekiranya anda telah memulakannya semula, cuba lakukan apa sahaja yang menyebabkan anda kesalahan 'tidak dapat menyambung ke Docker daemon'. Sekiranya ia berfungsi sekarang, anda tidak mempunyai perkhidmatan yang berjalan dan tidak perlu bimbang tentang perkara lain selain alasan ia tidak dijalankan. Malangnya, ini tidak berfungsi dalam kebanyakan kes, jadi anda perlu meneruskannya dalam situasi tersebut.

Kaedah 2: Menambah Pengguna ke Docker Group

Lari maklumat dok dari baris arahan, yang biasanya akan memberi anda kesalahan 'tidak dapat menyambung ke Docker daemon' sekali lagi.

Sekiranya ini berlaku, anda perlu menjalankannya sudo groupadd docker; sudo usermod -aG docker $ PENGGUNA untuk menambahkan diri anda dalam kumpulan yang betul. Sekiranya ini memberikan ralat kerana anda tidak mempunyai modem, maka anda boleh mengubah perintah untuk dijalankan seperti sudo groupadd docker; sudo gpasswd -a $ USER docker , tetapi ini biasanya tidak menjadi masalah kerana sebilangan besar pengedaran Linux kelas komersial berfungsi dengan set alat yang sama. Walau apa pun, jalankan dok barugrp jadi anda boleh masuk ke kumpulan pelabuhan baru jika anda belum melakukannya.



Perlu diingat bahawa ini akan selalu menambahkan pengguna yang anda log masuk saat ini, yang seharusnya tidak terlalu banyak masalah pada sistem kebanyakan orang yang tidak mempunyai banyak akaun melebihi satu pengguna dan akaun root. Oleh kerana anda mempunyai akses pentadbiran yang dimasukkan buat masa ini, jalankan sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock untuk menetapkan kebenaran pada soket dan perintah docker. Biasanya, fail soket hanya milik pengguna root jadi ini akan membetulkannya.

Setelah menjalankannya, anda seharusnya tidak menghadapi masalah kerana sekarang tergolong dalam kumpulan yang sama dengan yang anda buat dalam arahan sebelumnya. Anda pasti ingin menguji untuk memastikan bahawa docker berjalan tanpa sudo docker menjalankan hello-world sebagai pengguna biasa untuk memastikan anda tidak mendapat kesalahan lain.

Pada tahap ini, sangat sedikit pengguna yang masih akan menerima sebarang jenis mesej ralat. Sebilangan besar perkara harus diperbaiki pada ketika ini, tetapi jika anda masih menghadapi masalah, anda mungkin mahu log keluar sepenuhnya. Cuba buka tetingkap emulator terminal yang lain, tetapi jika ini tidak berfungsi, kadangkala membantu menjatuhkan sistem untuk dimulakan semula sepenuhnya jika itu layak

Kaedah 3: Menggunakan ACL untuk Mengubah Metadata Docker

Sekiranya anda tidak mahu tergolong dalam kumpulan yang menjadikan anda seperti pengguna root, anda boleh menetapkan fail soket untuk berfungsi hanya dengan kebenaran tertentu. Anda boleh mengabaikan proses gpasswd jika anda lebih suka melakukannya dengan cara ini. Harus mengimbas sistem fail untuk entri ACL yang berlainan yang membebankan mereka yang melakukan audit keselamatan, tetapi ia menghalang anda daripada menggunakan kumpulan docker sepenuhnya.

Sekiranya anda mahu melakukannya dengan cara ini, maka anda boleh menjalankan sudo setfacl -m pengguna: nama: rw /var/run/docker.sock sambil mengganti nama pengguna dan nama dengan label yang sesuai. Ini memberikan kebenaran untuk mengakses soket Docker di /var/run/docker.sock, yang semestinya berfungsi dengan Debian dan Ubuntu Server.

3 minit membaca