首页/云/Docker 容器速查/permission denied 访问 docker.sock
容器排障52 条

permission denied 访问 docker.sock

报错文本是 Got permission denied while trying to connect ... docker.sock:当前用户不在 docker 组或未授权访问该套接字;按最小授权处理。

Docker 容器速查云更新于 2026-10-13

报错在说什么

报错文本是尝试连接套接字时权限不足:当前用户既不在对应用户组里,也没有被单独授权访问该套接字。处理要按最小授权来考虑:能使用专用模式或远程上下文就不动本地权限;确实需要时,按流程加入用户组,并重新登录让新的组成员信息生效。

基本信息

证据套接字文件的属主与权限位
常见原因当前用户不在对应用户组
可选方案按需授权、使用特权命令、无守护进程模式或远程上下文
生效条件组变更需要重新登录或刷新会话
验证方式执行一次基础命令确认是否恢复

典型使用场景

  • 新账号首次使用容器命令时遇到权限不足
  • 排查到底是权限问题还是服务未启动
  • 评估加入用户组的授权影响
  • 用无守护进程模式替代组授权
  • 流水线里改用远程上下文避免本地授权

定位与验证

定位与验证
ls -l /var/run/docker.sock            # 查看属主与权限位
getent group docker                    # 确认用户组是否存在及其成员
sudo usermod -aG docker $USER          # 按流程加入用户组,需要重新登录生效
docker ps                              # 验证权限是否恢复

检查项与判读

检查项正常表现含义
套接字文件属主为管理员,权限位限定组内可读写权限不足即当前用户不在组内
用户组包含需要授权的账号成员列表就是权限名单
会话状态重新登录后生效旧会话沿用原组成员信息
验证命令基础命令可正常执行确认授权已生效
加入该用户组等于获得宿主等效权限,授权前要走审批;流水线环境更推荐专用模式或代理方案。
组变更需要重新登录或刷新会话才会生效,在旧会话里反复重试容易误判为没修好。

处理顺序建议

  • 先确认套接字文件是否存在,区分服务问题与权限问题
  • 再核对当前用户与用户组的成员关系
  • 评估是否可以用专用模式或远程上下文替代本地授权
  • 确需授权时走审批流程,授权后重新登录并验证

易错点

  • 授权后不重新登录:旧会话仍沿用原组成员信息,反复重试会得出错误结论
  • 把套接字权限改成所有人可读写:属于事故级操作,等于整机等效高权限
  • 只做授权不做审批:该组权限等同宿主高权限,需要纳入权限管理流程
  • 把权限问题与服务未启动混淆:先看套接字文件是否存在,再判断是否属于权限问题

数据来源与参考

  • Docker 官方文档:Manage Docker as a non-root user(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌