“如何修复”;拨号unix/var/run/docker.sock:connect:permission denied";当组权限看起来正确时?
更新Ubuntu 18.04后,我突然出现了问题:以前我在系统上使用docker时没有问题,但突然间我不能。据我所知,权限看起来是正确的:“如何修复”;拨号unix/var/run/docker.sock:connect:permission denied";当组权限看起来正确时?,docker,ubuntu-18.04,Docker,Ubuntu 18.04,更新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
$ 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安装。将用户添加到docker组
sudo usermod -aG docker $USER
sudo reboot
sudo setfacl--modify user::rw/var/run/docker.sock
它不需要重新启动,并且比usermod或chown更安全
正如@mirekphd所指出的,当用户名只存在于容器中,而不存在于主机上时,就需要用户ID。我做了快速修复,它立即起作用
sudo chmod 777 /var/run/docker.sock
特定于Ubuntu,lightdm存在一个已知问题,即在GUI登录时从用户中删除辅助组。您可以在此处关注该问题: 您可以尝试关闭lightdm或应用错误报告中提到的解决方法: [注释掉/etc/pam.d/lightdm中的以下行:]
auth optional pam_kwallet.so
auth optional pam_kwallet5.so
临时选项包括使用ssh或su-l
命令登录计算机,或运行newgrp docker
命令。这些操作只会影响当前外壳,并且需要在每个新终端上再次执行
除此之外,允许用户直接访问docker套接字(从而允许root用户访问主机)的一般命令包括: Ubuntu 18:04
sudo setfacl --modify user:$USER:rw /var/run/docker.sock
不知怎的,我在docker安装后,在docker.sock上没有正确的权限时找到了这个页面。因此,如果您有相同的问题,您可以阅读以下内容: $sudo adduser$USER docker无法工作,因为该组为“root” 不是“码头工人” $ls-l/var/run/docker.sock srw rw----1根根目录0 Jul 11 09:48 /var/run/docker.sock,所以它应该是$sudo adduser$USER root 从非snap安装的机器中,组为“docker” #ls-l/var/run/docker.sock srw rw---1根docker 0 Jul 3 04:18/var/run/docker.sock根据docker.help,正确的方法是 在sudo snap安装docker之前,必须运行以下程序 $sudo addgroup--系统docker$sudo adduser$USER docker$newgrp docker然后该组将是“docker” $ls-l/var/run/docker.sock srw rw----1根docker 0 Jul 11 10:59 /var/run/docker.sock 资料来源:(是的,第一期:D) 最简单的修复方法是运行:
$ sudo setfacl -m "g:docker:rw" /var/run/docker.sock
然后,如前所述,为用户运行以下命令:
$sudo addgroup --system docker
$sudo adduser $USER docker
$newgrp docker
就是这样:)玩得开心 修复它的方法是运行:
$ sudo setfacl -m "g:docker:rw" /var/run/docker.sock
- 1-$sudo ADDGOUP——系统docker
- 2-$sudo adduser$USER docker
- 3-$newgrp docker
这对我有用:)此修复的解决方案:
这显然是许可问题
我按这个顺序表演,效果很好:-)请注意:不仅组名很重要,而且组的gid也很重要。 因此,如果主机系统上的docker组的gid为995
cat /etc/group | grep docker
docker:x:995:brandon
您必须确保docker组的gid
您可以将此作为启动脚本的一部分来执行,或者只需使用exec并手动执行即可:
groupmod -g 995 docker
希望它能帮助任何来这里的人,我花了一段时间才找到这个answear。如果你运行
sudo docker run hello world
,它能工作吗?如果你运行newgrp docker
并从同一终端重试,会发生什么?你能尝试使用你的辅助TTY(Ctrl-Alt-F3)吗?可能重复@DavidMaze-我不认为如此-上面的newgrp
建议有效,通过ssh登录系统也有效,可能我遗漏了什么,但“groups brandon”的输出已经包括了“docker”,在我的例子中,如上所述。但这通常是一个很好的建议。重新启动帮助:)创建一个新的用户会话(注销和重新登录)就足以更新用户会话组。无需重新启动。您只需重新启动docker守护程序sudo systemctl restart DockerTanks即可,而无需重新启动。碰巧的是,我仍然有这个有缺陷的系统,尽管我不知道还有多少个月!碰巧,这是可行的。将检查它在重新启动时是否持续。(在重新启动过程中似乎不会持续)@bbarker尽管在许多系统上这是persistantsetfacl-m jenkins:docker:rw/var/run/docker.sock setfacl:Option-m:字符附近的参数无效9@ShacharHamuzimRajuan您需要为用户运行setfacl--modify,例如:setfacl-mu:docker:rw或u:jenkins:rw。或每组(g而不是u)。请参阅:如果您只是在开发环境中玩弄Docker,这看起来是一个简单的解决方案,但这对系统的安全性来说是一个非常糟糕的主意。sudo setfacl-m user:brandon:rw/var/run/Docker.sock只为一个用户提供所需的权限。不,不要这样做。当建议一些不安全的东西时,请写一个警告
groupmod -g 995 docker