permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:

 

001、问题

[liujiaxin01@PC1 ~]$ docker search omicsclass
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/search?term=omicsclass": dial unix /var/run/docker.sock: connect: permission denied
[liujiaxin01@PC1 ~]$ groups liujiaxin01      ## 查看该用户所属的用户组
liujiaxin01 : liujiaxin01

 

02、原因

原因是:在默认情况下,docker 的 Unix Socket属于root用户,docker 进程就一直是root用户运行的。为了在使用 docker 命令的时候前边不再加sudo,我们需要创建一个叫 docker 的用户组,并且为用户组添加用户。然后在 docker 进程启动的时候,我们的 docker 群组有了 Unix Socket 的所有权,可以对 Socket 文件进行读写。总结一点,其实原因可能是没有创建用户组,或者将用户添加进用户组中,如果不想每次使用sudo的话,可以创建用户组或者将用户添加进用户组中就行

 

03、查看当前用户组

[liujiaxin01@PC1 ~]$ cat /etc/group | tail
gnome-initial-setup:x:983:
sshd:x:74:
slocate:x:21:
avahi:x:70:
postdrop:x:90:
postfix:x:89:
ntp:x:38:
tcpdump:x:72:
liujiaxin01:x:1000:liujiaxin01
docker:x:982:                ## docker用户组已经存在

 

04、(解决方法)使用root将普通用户的附加组添加至docker组

[root@PC1 test01]# whoami                  ## 当前用户
root
[root@PC1 test01]# groups liujiaxin01      ## 查看普通用户的用户组
liujiaxin01 : liujiaxin01
[root@PC1 test01]# getent group docker     ## 查看用户组docker的用户列表
docker:x:982:
[root@PC1 test01]# usermod -G docker liujiaxin01     ## 将普通用户添加至docker组
[root@PC1 test01]# groups liujiaxin01               ## 查看普通用户所属的用户组
liujiaxin01 : liujiaxin01 docker
[root@PC1 test01]# getent group docker              ## 查看docker组的用户列表
docker:x:982:liujiaxin01

 

05、普通用户使用docker测试

[liujiaxin01@PC1 ~]$ docker search omicsclass | head -n 4

 没问题。

 

参考:https://blog.csdn.net/weixin_46895187/article/details/125769949

 

posted @ 2023-06-22 08:50  小鲨鱼2018  阅读(34)  评论(0编辑  收藏  举报