问题:无权限使用docker命令
- 报错信息
[test@pri00 ~]$ docker ps Got 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/containers/json": dial unix /var/run/docker.sock: connect: permission denied
- 如果着急可跳过中间分析过程,直接看总结命令可解决。
分析
- 根据报错信息(/var/run/docker.sock: connect: permission denied),可知,用户无操作权限
- 我们首先需要查看/var/run/docker.sock权限
-
情况一:只有root用户和docker组才有rw权限
$ ll /var/run/docker.sock srw-rw---- 1 root docker 0 Mar 21 10:59 /var/run/docker.sock
-
情况二:只有root用户和root组才有rw权限
$ ll /var/run/docker.sock srw-rw---- 1 root root 0 Mar 21 10:59 /var/run/docker.sock
-
解决
- 知道原因后,答案也就呼之欲出了:
-
方案一:使用sudo权限
sudo docker ps
-
方案二:将当前用户(笔者测试机器用户是test)加入docker组(推荐)
sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker sudo groupadd docker # 添加docker用户组 sudo gpasswd -a $USER docker # 将当前用户添加至docker用户组 newgrp docker # 更新docker用户组
-
总结
- 问题出在用户为访问/var/run/docker.sock的权限,只需给用户增加权限即可
- 操作命令
sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker sudo groupadd docker # 添加docker用户组 sudo gpasswd -a $USER docker # 将当前用户添加至docker用户组 newgrp docker # 更新docker用户组