Ubuntu'da liman işçisi için izin problemlerini nasıl çözebilirim?


35

Docker'ı burada açıklandığı gibi yükledim . Kullandığım Ubuntu güvenilir 14.04 (LTS) (64-bit) . Kurulum sırasında her şey yolundaydı. Ayrıca komut $ sudo docker run -i -t ubuntu /bin/bashiyi tamamlandı (açılmış konsolda "exit" yazdıktan sonra. Ama başka bir şey yapmaya çalıştığımda "izin reddedildi" alıyorum. Örneğin:

`$ sudo docker run -d -P training/webapp python app.py`

İçindeki reuslts Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied

` docker info`

İçindeki reuslts Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied

Bu nasıl çözülür? Sorun hakkında googledim ama davam için bir çözüm bulamıyorum.

Yanıtlar:


50

Henüz mevcut değilse, liman grubunu ekleyin.

$ sudo groupadd docker

Bağlı kullanıcıyı ${USER}docker grubuna ekleyin . Tercih ettiğiniz kullanıcı ile eşleşmesi için kullanıcı adını değiştirin.

$ sudo gpasswd -a ${USER} docker

Docker arka planını yeniden başlatın:

$ sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ sudo systemctl restart snap.docker.dockerd

Grup izinlerini güncellemek için oturumu kapatıp tekrar giriş yapmalısınız. Bunu önlemek için, aşağıdaki gibi bir alt kabuğa geçebilirsiniz. Veya bu soruda bahsedilen diğer numaralardan herhangi birini kullanın :

su - $USER

14
Bunun yürürlüğe girmesi için yeniden başlatmam gerekiyordu.
eski

8
Yeniden başlatmanıza gerek yok, sadece oturumu kapatıp oturum açın.
Ajay Gautam

2
Çıkış yaptım, exec $SHELLyapmadım bile. Çıkış yapan hangi mekanizmanın sorunu çözdüğünü bilmek istiyorum. Bu pencereler değil!
Darth Egregious

1
Fedora, ilk düzenlemek gerekir /etc/selinux/configve satım SELINUX=disabled, ardından Linux yeniden
Genç M

1
Harika bir açıklama! En iyisi sensin! :)
Francis Rodrigues

5

CentOS veya RedHat kullanıyorsanız, ilk önce SELinux’u çalıştırarak devre dışı bırakmanız gerekebilir:

setenforce 0

SELinux'u yeniden etkinleştirmek veya çalıştırmak için Eiter yeniden başlatılır setenforce 1.


4

Selinux yüzünden de aynı problem vardı. Selinux'un suçlu olup olmadığını kontrol edebilirsiniz:

  1. Selinux'ü devre dışı bırakma: setenforce 0
  2. Tekrar deniyor

Selinux'u devre dışı bırakmak sorununuzu çözdüyse, onu devre dışı bırakmak için bir neden değildir:

  1. Selinux'u etkinleştir: setenforce 1
  2. Selinux konfigürasyonunda soket bağlantısına izin ver: setsebool docker_connect_any true
  3. Docker konteynerinizi --priviledgedseçenekle çalıştırın

3

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 çalıştırdığınızda, sudo systemctl start dockerbir liman işçisi oluşturur. 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


1

Şu anki sürümde grubu eklememiz gerekmiyor docker.
Kurulum tarafından otomatik olarak bulunur. Komutu kullanarak kontrol edebilirsiniz:

$ sudo groupadd docker
groupadd: group 'docker' already exists

Bu yüzden Docker'ı root olmayan bir kullanıcı olarak yönetmek için, kullanıcılarınızı docker grubuna ekleyin, ardından grup üyeliğiniz yeniden değerlendirilmek üzere oturumu kapatın ve tekrar oturum açın:

$ sudo usermod -aG docker $USER
$ logout

Tekrar giriş yaptığınızda kontrol etmek için

$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

GROUP:dockerYeni birincil grubunuz olarak kullanmaya bile zorlayabilirsiniz :

$ sudo chown "$USER":"docker" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
$ sudo usermod -g docker ${USER}
$ logout

Tekrar giriş yaptığınızda kontrol etmek için

$ id
uid=1001(<user_name>) gid=999(docker) groups=999(docker),...
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.