Izin ditolak ketika menjalankan Docker setelah menginstalnya sebagai Snap


33

Saya telah menginstal Docker melalui toko Perangkat Lunak, yang menunjukkan bahwa itu adalah paket Snap. Yang menurut saya baik-baik saja, tetapi 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

Adakah yang tahu bagaimana cara memperbaikinya?

Sunting: Saya telah mengatasi ini untuk saat ini dengan menginstal Docker dari repositori Docker sendiri , yang mungkin dapat digunakan untuk orang yang meramban pertanyaan ini di masa mendatang. Saya membiarkan pertanyaan terbuka untuk mereka yang ingin dapat menjalankannya dari Snap, meskipun.


Dipasang buruh pelabuhan dari repo resmi buruh pelabuhan. Docker sudah berjalan ketika saya menambahkan pengguna saya ke dockergrup, id -nGtidak menunjukkan buruh pelabuhan dan dockerperintah apa pun mengakibatkan kesalahan izin ditolak. Logout dan kembali tidak berfungsi karena proses sistem buruh pelabuhan terus berjalan. Sistem reboot atau memulai ulang buruh pelabuhan menunjukkan pengguna sebagai bagian dari kelompok buruh pelabuhan dan diizinkan menjalankan perintah buruh pelabuhan. CATATAN: 0 rep, tidak dapat menambahkan komentar.
Santosh Patel

Jawaban:


33

Ini dari halaman GitHub, apakah Anda mencoba langkah-langkah 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


Saya belum melihat halaman itu, jadi terima kasih untuk tautannya. Yang mengatakan, karena saya tidak menggunakan Ubuntu Core, saya harus mengikuti addgroupinstruksi, yang saya pikir adalah tentang apa yang saya lakukan, sesuai dengan jawaban lainnya. Sayangnya saya lebih suka untuk tidak menyentuh sistem yang sedang bekerja lagi, tetapi saya ingin mendengarnya jika orang lain mencoba ini dan berhasil membuatnya bekerja.
Vincent

2
menonaktifkan / mengaktifkan snap docker melakukan trik untuk saya, terima kasih
Manish Kumar

1
Ini berlaku untuk Ubuntu (Desktop) 19.04 juga.
Nick Breen

31

Pesan kesalahan memberitahu Anda bahwa pengguna Anda saat ini tidak dapat mengakses mesin buruh pelabuhan, 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 kali.

Solusi permanen (disarankan)

Tambahkan pengguna saat ini ke dockergrup. Ini bisa dicapai dengan mengetik

sudo usermod -a -G docker $USER

Anda harus keluar dan masuk lagi agar keanggotaan grup berlaku.

Sumber: techoverflow.net


1
Google-fu Anda lebih baik daripada milikku, rupanya. Sayangnya, ini tidak berhasil. Pertama-tama, dockergrup itu tidak ada. Saya kemudian pertama berlari sudo addgroup dockerdan kemudian mengulang perintah Anda, kemudian login dan masuk lagi. Sayangnya, kesalahan yang ditampilkan dalam pertanyaan tetap ada ...
Vincent

2
@Vincent Anda tidak lupa perubahan grup tidak langsung terjadi, bukan? Coba newgrp dockeratau logout dan masuk
ADDB

Tidak, maaf, lupa menyebutkan bahwa - Saya memperbarui komentar saya ketika Anda merespons :) Berjalan groups vincentmemberi:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent

@Incent hanya untuk referensi, daemon buruh pelabuhan Anda dimulai, kan? Coba sudo /etc/init.d/docker statusatau sudo service docker statuscoba ini.
ADDB

Hmm, saya tidak berpikir itu berfungsi karena itu Snap: paste.ubuntu.com/25219172 Yang mengatakan, ps cax | grep dockerdmemang memberi 31034 ? Ssl 0:05 dockerd.
Vincent

6

Saya berasumsi, nama pengguna Anda sudah dalam grup buruh pelabuhan. Untuk memeriksanya, berikan perintah di bawah ini.

id -nG

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

sudo groupadd docker
sudo usermod -aG docker $USER

Ketika Anda menjalankan perintah sudo systemctl start docker, itu menciptakan proses buruh pelabuhan. Proses buruh pelabuhan itu berisi dockerddaemon thread. Perintah ini juga membuat docker.socksoket Unix standar . The docker.socksocket terus didengarkan oleh dockerdbenang daemon. Ini membuat Anda dapat melakukan IPC tingkat kernel dengan docker.pidproses. Untuk dapat menggunakan soket buruh pelabuhan ini, Anda harus memiliki izin yang sesuai dari level proses ( docker.pid) dan level file ( docker.sock). Jadi, menjalankan dua perintah di bawah ini akan 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


Hanya ini yang berfungsi untuk ubuntu 18.04. Terima kasih banyak Uddhav Gautam
Sabbir

3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

tidak memerlukan restart dan lebih aman


1

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

Anda dapat menambahkan sudodi depan perintah atau Anda dapat menambahkan pengguna dalam dockergrup dengan menggunakan perintah ini:

sudo usermod -aG docker <USER>

Logout dan log in kembali sehingga keanggotaan grup Anda dievaluasi kembali.


Karena konten di tautan itu dapat menghilang, tambahkan detail yang relevan di sini.
Chai T. Rex

Tidak perlu, jawaban lain yang disebutkan menambahkan pengguna ke grup - itu tidak membantu. (Juga, tidak ada alasan mengapa itu akan membantu pemasangan Snap tetapi tidak untuk pemasangan reguler.)
Vincent
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.