🐳 使用 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