Docker守护进程套接字连接权限拒绝问题求助
Docker权限拒绝问题:dial unix /var/run/docker.sock: connect: permission denied
问题重现
执行docker ps -a时触发报错:
尝试连接unix:///var/run/docker.sock路径下的Docker守护进程套接字时权限被拒绝:Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied
解决方案
1. 临时应急方案(单次生效)
直接用sudo提升权限执行命令:
sudo docker ps -a
缺点是每次执行Docker命令都需要输入sudo,不够便捷。
2. 永久解决(推荐)
将当前用户加入docker用户组,获得Docker套接字的访问权限:
- 检查
docker组是否存在:cat /etc/group | grep docker - 若组不存在,先创建:
sudo groupadd docker - 将当前用户加入组:
sudo usermod -aG docker $USER - 立即刷新组权限(无需重启系统):
newgrp docker - 验证:重新执行
docker ps -a,应该能正常返回容器列表。
3. 修复Docker套接字权限(如果上述方法无效)
如果docker组已存在但权限仍有问题,手动修正套接字的权限配置:
- 查看当前套接字权限:
正常输出应为ls -l /var/run/docker.socksrw-rw---- 1 root docker 0 ... /var/run/docker.sock - 修正所有者:
sudo chown root:docker /var/run/docker.sock - 修正权限模式:
sudo chmod 660 /var/run/docker.sock
注意事项
如果加入组后权限仍未生效,尝试重新登录用户或重启系统,确保组权限完全加载。
内容的提问来源于stack exchange,提问作者DanielBell99
相关产品推荐
相关产品推荐

