🐳 使用 Docker 不再需要 sudo 权限的正确姿势
当你每次使用 Docker 命令都提示 permission denied,如:
docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock ...
该问题的核心原因是:
- Docker 守护进程通过 Unix Socket
/var/run/docker.sock
接收命令 - 该文件默认属于
root
用户和docker
用户组 - 当前用户若不属于
docker
组 → 会出现权限被拒绝(permission denied)
✅ 正确解决步骤:将当前用户加入 docker 用户组
步骤 1:确认 docker 用户组是否存在(一般默认存在)
sudo groupadd docker
⚠️ 已存在时会提示 “group ‘docker’ already exists.”,可忽略
步骤 2:将当前用户添加到 docker 组中
sudo usermod -aG docker $(whoami)
说明:
-aG
:追加组,不影响原有用户组$(whoami)
:动态获取当前用户名(也可直接填如 ubuntu)
步骤 3:立即生效用户组变更
方式一:登出 ➜ 重新登录 ➜ 权限立即生效(推荐)
方式二:当前终端快速生效:
newgrp docker
步骤 4:验证是否成功
docker version
docker run hello-world
若已不再提示 permission denied
且正常输出版本信息,则说明配置成功 ✅
🔁 常见场景补充
❯ CI 用户(如 gitlab-runner、jenkins)无法运行 docker?
为其添加至 docker 用户组同样适用:
sudo usermod -aG docker gitlab-runner
❯ 自动化脚本第一步添加当前用户权限
sudo groupadd docker sudo usermod -aG docker $(whoami) newgrp docker
📌 注意事项
- 赋予用户 docker 权限即相当于间接授予其 root 权限,请谨慎授权生产环境用户
- 若你使用的是 Docker rootless 模式,则不需要上述配置(属于高级用法)
- 某些企业限制 sudo 权限时,可能需要寻求管理员协助添加组权限
作者:freed 创建时间:2025-03-28 14:53
最后编辑:freed 更新时间:2025-03-28 14:56
最后编辑:freed 更新时间:2025-03-28 14:56