Pertanyaan Izin ditolak ketika menjalankan Docker setelah menginstalnya sebagai Snap


Saya telah menginstal Docker melalui toko Software, yang mengindikasikan bahwa itu adalah paket Snap. Yang baik-baik saja oleh saya, saya kira, tapi sayangnya, setiap perintah Docker yang saya coba tidak berfungsi:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Tahu bagaimana cara memperbaikinya?

Edit: Saya sudah bekerja di sekitar ini untuk saat ini dengan menginstal Docker dari Repositori Docker sendiri, yang mungkin berhasil untuk orang yang menelusuri pertanyaan ini di masa mendatang juga. Saya meninggalkan pertanyaan terbuka bagi mereka yang ingin dapat menjalankannya dari Snap, meskipun.


19
2017-08-01 09:28


asal




Jawaban:


Pesan kesalahan memberitahu Anda bahwa pengguna Anda saat ini tidak dapat mengakses mesin docker, karena Anda tidak memiliki izin untuk mengakses soket unix untuk berkomunikasi dengan mesin.

Solusi sementara

Menggunakan sudo perintah untuk menjalankan perintah dengan izin tinggi setiap saat.

Solusi permanen (disarankan)

Tambahkan pengguna saat ini ke docker kelompok. Ini bisa dicapai dengan mengetik

sudo usermod -a -G docker $USER

Anda harus keluar dan masuk lagi agar keanggotaan grup berlaku.

Sumber: techoverflow.net


20
2017-08-01 09:35



Google-fu Anda lebih baik dari saya, rupanya. Sayangnya, ini tidak berhasil. Pertama-tama, itu docker grup tidak ada. Saya kemudian pertama kali berlari sudo addgroup docker dan kemudian jalankan kembali perintah Anda, lalu keluar dan masuk lagi. Sayangnya, kesalahan yang ditunjukkan dalam pertanyaan masih ada ... - Vincent
@Vincent Anda tidak lupa perubahan grup tidak langsung terjadi, kan? Mencoba newgrp docker atau keluar dan masuk. - ADDB
Tidak, maaf, lupa menyebutkan itu - saya memperbarui komentar saya ketika Anda menjawab :) Menjalankan groups vincent memberi: vincent adm cdrom sudo dip plugdev lpadmin sambashare docker - Vincent
@Vincent hanya untuk referensi, daemon docker Anda sudah dimulai, kan? Mencoba sudo /etc/init.d/docker status atau sudo service docker status untuk menguji ini. - ADDB
Hmm, saya tidak berpikir mereka bekerja karena itu menjadi Snap: paste.ubuntu.com/25219172Itu berkata, ps cax | grep dockerd tidak memberi 31034 ? Ssl 0:05 dockerd. - Vincent


Ini dari halaman GitHub, apakah Anda mencoba langkah-langkah yang tepat ini:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

Dari Docker snap github


13
2017-12-27 23:51



Saya belum melihat halaman itu, jadi terima kasih untuk tautannya. Yang mengatakan, karena saya tidak menggunakan Ubuntu Core, saya harus mengikuti addgroup instruksi, yang saya pikir tentang apa yang saya lakukan, sesuai jawaban yang lain. Sayangnya saya lebih memilih untuk tidak menyentuh sistem yang saat ini berfungsi lagi, tetapi saya ingin mendengarnya jika orang lain mencoba ini dan berhasil membuatnya bekerja. - Vincent
menonaktifkan / mengaktifkan docker snap melakukan trik untuk saya, terima kasih - Manish Kumar


Saya berasumsi, nama pengguna Anda sudah ada di grup docker. Untuk memeriksa ini, keluarkan perintah di bawah ini.

id -nG

Jika tidak, Anda perlu menambahkan pengguna Anda ke dalam grup buruh pelabuhan dengan perintah di bawah ini.

sudo groupadd docker
sudo usermod -aG docker $USER

Saat Anda menjalankan perintah, sudo systemctl start docker, itu menciptakan proses buruh pelabuhan. Proses docker itu mengandung dockerd benang daemon. Perintah juga menciptakan default docker.sock Soket Unix. Itu docker.sock soket terus disimak oleh dockerd benang daemon. Ini membuat Anda bisa melakukan IPC tingkat kernel docker.pid proses. Untuk dapat menggunakan soket docker ini, Anda harus memiliki izin yang tepat dari tingkat proses (docker.pid) dan tingkat file (docker.sock). Jadi, mengeksekusi di bawah dua perintah harus menyelesaikan masalah Anda. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid


2
2017-07-18 23:36



Hanya ini bekerja untuk ubuntu 18.04. Terima kasih banyak Uddhav Gautam - Sabbir


Anda harus menambahkan pengguna ke grup Docker (lihat dokumen resmi).

Anda dapat menambahkan sudo di depan perintah atau Anda dapat menambahkan pengguna di docker grup dengan menggunakan perintah ini:

sudo usermod -aG docker <USER>

Keluar dan masuk kembali sehingga keanggotaan grup Anda dievaluasi kembali.


1
2017-12-05 19:04



Karena konten di tautan tersebut dapat menghilang, tambahkan detail yang relevan di sini. - Chai T. Rex
Tidak perlu, jawaban lain sudah disebutkan menambahkan pengguna ke grup - itu tidak membantu. (Juga, tidak ada alasan mengapa itu akan membantu untuk menginstal Snap tetapi tidak untuk instalasi biasa.) - Vincent