Docker 命令如何做到“不用 sudo”

现象

直接运行 docker ps 报错类似:

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

原因是 Docker 守护进程的 socket 默认是:

  • 属主:root
  • 属组:docker
  • 权限:660

也就是只有 root 或 docker 组成员才能访问。


解决方法

把当前用户加入 docker 组,然后让组权限在当前 shell 生效(或重新登录):

sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker chaobo
newgrp docker     # 让当前 shell 立刻生效(更稳的是重新登录)

验证:

docker ps

注意事项

  • 加入 docker 组基本等价于获得较高权限(可以通过容器间接访问宿主机文件/设备),在生产环境要按安全规范评估。
  • 如果仍然不生效,优先检查 socket 权限/属组:
ls -l /var/run/docker.sock

典型应为:srw-rw---- root docker ... /var/run/docker.sock

更多推荐