Как исправить "dial unix/var/run/docker.sock: connect: permission denied", когда права на группу отображаются корректно?

У меня внезапно возникают проблемы после обновления Ubuntu 18.04: ранее я использовал докер без проблем в системе, но внезапно я не могу. Насколько я могу судить, разрешения выглядят правильно:

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
$ ls -last /var/run/docker.sock 
0 srw-rw---- 1 root docker 0 Jul 14 09:10 /var/run/docker.sock
$ whoami
brandon
$ cat /etc/group | grep docker
docker:x:995:brandon
nvidia-docker:x:994:

РЕДАКТИРОВАТЬ:

Информация о группе:

$ groups
brandon
$ groups brandon
brandon : brandon adm cdrom sudo dip plugdev games lpadmin sambashare docker
$ whoami
brandon

Обновить

Начиная с исходного поста, где я обновил систему с 17.04 по 18.04, я сделал два обновления с 16.04 по 18.04, и ни одна из более поздних систем не имела проблемы. Таким образом, это может быть связано с процессом обновления с 17.04 по 18.04. Мне еще предстоит выполнить новую установку 18.04.

Ответ 1

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

не требует перезагрузки и более безопасен, чем usermod или chown

Ответ 2

добавьте пользователя в группу докеров.

sudo usermod -aG docker $USER
sudo reboot

Ответ 3

Я сделал быстрое исправление, и оно сразу сработало.

sudo chmod 777 /var/run/docker.sock

Ответ 4

В Ubuntu существует известная проблема с lightdm, которая удаляет вторичные группы у пользователя как часть входа в систему с графическим интерфейсом. Вы можете следить за этой проблемой здесь: https://bugs.launchpad.net/lightdm/+bug/1781418

Вы можете попробовать отключить lightdm или применить обходной путь, упомянутый в отчете об ошибке:

[Закомментируйте следующие строки из /etc/pam.d/lightdm:]

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

Временные параметры включают в себя вход в систему с помощью команды ssh или su -l или выполнение команды newgrp docker. Они влияют только на текущую оболочку и должны быть выполнены снова с каждым новым терминалом.


Помимо этой проблемы, общие команды для предоставления пользователю прямого доступа к сокету докера (и, следовательно, к корневому доступу к хосту):

sudo usermod -aG docker $(id -un) # you can often use $USER in place of the id command
newgrp docker # affects the current shell, logging out should affect all shells

Ответ 5

Я бегу:

sudo docker run -it -p 8889:8888 -v /home/Documents/pa1:/home/ucsddse230/work ucsddse230/cse255-dse230 /bin/bash

и это работает для меня, учитывая:

[email protected]:~/work$