Got permission denied while trying to connect to the Docker daemon socket atunix:///var/run/docker.

2023-05-16

docker常见bug:


背景
因为使用的是sudo安装docker,所以会导致一个问题。以普通用户登录的状况下,在使用docker images时必须添加sudo,那么如何让docker免sudo依然可用呢?
理清问题
当以普通用户身份去使用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/images/create?fromSrc=-&message=&repo=ubuntu-
16.04&tag=: dial unix /var/run/docker.sock: connect: permission denied

可以看到,最后告知我们时权限的问题。那么在linux文件权限有三个数据左右drwxrwxrwx,其中第一为d代表该文件是一个文件夹前三位、中三位、后三位分别代表这属主权限、属组权限、其他人权限。

         上图是报错文件的权限展示,可以看到其属主为root,权限为rw,可读可写;其属组为docker,权限为rw,可读可写。如果要当前用户可直接读取该文件,那么我们就为docker.sock 添加一个其他用户可读写权限 或者添加1个用户组就可以了

方法1:一劳永逸

#如果还没有 docker group 就添加一个:
$sudo groupadd docker


#将用户加入该 group 内。然后退出并重新登录就生效啦。
$sudo gpasswd -a ${USER} docker


#重启 docker 服务
$systemctl restart docker


#切换当前会话到新 group 或者重启 X 会话
$newgrp - docker


#注意:最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,
#所以 docker images 执行时同样有错。

方法2:

#每次启动docker或者重启docker的之后
$cd /var/run
$sudo chmod 666 docker.sock

方法3:每条命令前面加上sudo
 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Got permission denied while trying to connect to the Docker daemon socket atunix:///var/run/docker. 的相关文章

随机推荐