Snap olarak kurduktan sonra Docker'ı çalıştırırken izin verilmedi.


33

Docker'ı bir Snap paketi olduğunu belirten Software store aracılığıyla yükledim. Benim için sorun değil, sanırım, ama ne yazık ki, denediğim her Docker komutu çalışmıyor:

$ 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

Bunun nasıl düzeltileceği hakkında bir fikrin var mı?

Düzenleme: Docker’ı Docker’ın kendi depolarından Dock’u yükleyerek bu konuda çalışmıştım . Yine de, Snap’dan çalıştırabilmek isteyenler için soruyu açık bırakıyorum.


Liman işçisi resmi depolarından yüklü liman işçisi. Kullanıcımı dockergruba eklediğimde Docker zaten çalışıyordu , id -nGdocker'ı göstermedi ve herhangi bir dockerkomut izin reddedildi hatasıyla sonuçlandı. Limandaki sistem işlemi çalışmaya devam ettiği için oturumu kapatıp tekrar oturum açmadı. Sistemi yeniden başlatmak veya docker'ı yeniden başlatmak, docker grubunun bir parçası olarak kullanıcıyı gösterdi ve docker komutlarının yürütülmesine izin verdi. NOT: 0 rep, yorum ekleyemiyorum.
Santosh Patel

Yanıtlar:


33

Bu GitHub sayfasından, şu adımları denediniz mi:

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

Docker ek github itibaren


Bu sayfayı görmemiştim, bağlantı için teşekkürler. Bununla birlikte, Ubuntu Core'u addgroupkullanmadığım için, diğer cevaplara göre ne yaptığımla ilgili olan talimatları izlemem gerekiyor. Ne yazık ki, şu anda çalışan sisteme dokunmamayı tercih ediyorum, ancak bir başkası bunu denerse ve çalışmasını sağladığında bunu duymayı çok isterim.
Vincent

2
devre dışı bırakma / etkinleştirme docker snap benim için hile yaptı, teşekkürler
Manish Kumar

1
Bu, Ubuntu (Masaüstü) 19.04 için de geçerlidir.
Nick Breen

31

Hata mesajı, geçerli kullanıcınızın docker motoruna erişemediğini, çünkü unix soketine motorla iletişim kurmak için erişme izniniz bulunmadığını bildirir.

Geçici çözüm

sudoHer seferinde yükseltilmiş izinlere sahip komutları çalıştırmak için komutu kullanın .

Kalıcı (önerilen) çözüm

Geçerli kullanıcıyı dockergruba ekleyin . Bu yazarak elde edilebilir

sudo usermod -a -G docker $USER

Grup üyeliğinin yürürlüğe girmesi için oturumu kapatıp tekrar açmanız gerekir.

Kaynak: techoverflow.net


1
Görünüşe göre, Google-fu'nuz benimkinden daha iyi. Ne yazık ki, bu işe yaramıyor. Her şeyden önce, dockergrup yoktu. Önce koştum sudo addgroup docker, sonra emrini tekrar okudum, sonra oturumu kapatıp tekrar açtım . Ne yazık ki, soruda gösterilen hata devam ediyor ...
Vincent

2
@ Unutmadığın grup değişiklikleri hemen gerçekleşmedi, değil mi? Giriş newgrp docker
yapıp çıkış yapmayı

Hayır, üzgünüm, söylemeyi unuttum - Siz cevap verirken groups vincentvincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent

@ Sadece başvuru için Vincent, liman işçisi arka planınız başlatıldı, değil mi? Bunu test etmeye çalışın sudo /etc/init.d/docker statusveya deneyin sudo service docker status.
ADDB

: Hmm, nedeniyle bir çekin olmanın bu işi sanmıyorum paste.ubuntu.com/25219172 dedi ps cax | grep dockerdveriyor 31034 ? Ssl 0:05 dockerd.
Vincent

6

Sanırım, kullanıcı adın zaten liman işçisi grubunda. Bunu kontrol etmek için aşağıdaki komutu verin.

id -nG

Kullanıcıyı aşağıdaki komutu kullanarak liman işçisi grubuna eklemeniz gerekmiyorsa.

sudo groupadd docker
sudo usermod -aG docker $USER

Komutu yürüttüğünüzde, sudo systemctl start dockerliman işçisi işlemi yaratır. Bu liman işçisi dockerddaemon thread içeriyor . Komut ayrıca varsayılan docker.sockUnix soketi oluşturur . docker.sockSoket sürekli tarafından dinlenen dockerdcini iplik. Bu docker.pidişlem ile çekirdek düzeyinde IPC yapabilmenizi sağlar. Bu docker soketini kullanabilmek için işlem seviyesi ( docker.pid) ve dosya seviyesi ( docker.sock) için uygun izne sahip olmanız gerekir . Bu nedenle, iki komutun altında çalıştırmak sorununuzu çözmelidir. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid


Sadece bu ubuntu 18.04 için çalışıyor. Çok teşekkürler Uddhav Gautam
Sabbir 5

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

yeniden başlatma gerektirmez ve daha güvenlidir


1

Kullanıcıyı Docker grubuna eklemelisiniz ( resmi belgelere bakın ).

sudoKomutun önüne ekleyebilir veya dockerbu komutu kullanarak kullanıcıyı gruba ekleyebilirsiniz :

sudo usermod -aG docker <USER>

Çıkış yapın ve tekrar oturum açın, böylece grup üyeliğiniz yeniden değerlendirilir.


Bu bağlantıdaki içerik kaybolabileceğinden, lütfen ilgili ayrıntıları buraya ekleyin.
Chai T. Rex

Gerek yok, diğer cevap zaten kullanıcıyı gruba eklemekten bahsetti - işe yaramadı. (Ayrıca, Snap yüklemesi için bunun neden yardımcı olacağına, normal yükleme için neden olmayacağına da bir neden yoktur.)
Vincent
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.