在Ubuntu 18.04更新之后,我突然遇到了问题:以前我在系统上没有问题地使用过docker,但是突然之间我没有。据我所知,权限看起来正确:
$ 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安装。
答案 0 :(得分:10)
(?=\})
不需要重启,更安全
答案 1 :(得分:6)
将用户添加到docker组。
sudo usermod -aG docker $USER
sudo reboot
答案 2 :(得分:2)
乌汶图18:04
sudo setfacl --modify user:$USER:rw /var/run/docker.sock
答案 3 :(得分:2)
修复它的方法是运行:
这对我有用:)
答案 4 :(得分:1)
我做了快速修复,它立即起作用。
sudo chmod 777 /var/run/docker.sock
答案 5 :(得分:0)
Ubuntu特有的lightdm已知问题,它作为GUI登录的一部分从用户中删除辅助组。您可以在此处解决该问题: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
命令。这些只会影响当前的shell,并且需要在每个新终端上再次进行。
除此问题外,授予用户直接访问docker套接字(从而对主机具有root访问权)的常规命令是:
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
答案 6 :(得分:0)
此修复的解决方案:
很明显是权限问题。
我是按这个顺序表演的,效果很好:-)
答案 7 :(得分:0)
请注意:不仅组名很重要,显然组的 gid 也很重要。 因此,如果主机系统上的 docker 组的 gid 为 995,
cat /etc/group | grep docker
docker:x:995:brandon
你必须确保 docker group 的 gid 您可以将其作为启动脚本的一部分来执行,也可以简单地使用 exec 并手动执行:
groupmod -g 995 docker
希望它可以帮助到这里的任何人,我花了一段时间才找到这个答案。