普通用户需加入 docker 组并刷新会话才能免 sudo 使用 docker:先验证或创建 docker 组,再用 sudo usermod -ag docker $user 添加用户,通过 newgrp docker 或重启终端生效,最后用 docker run 和 ls -l /var/run/docker.sock 验证权限与安全配置。

安装 Docker 后,普通用户默认无法直接执行 docker 命令,因为 Docker 守护进程通过 /var/run/docker.sock(属主 root:docker)通信。要让非 root 用户免 sudo 管理容器,核心是把用户加入 docker 组,并确保该组对套接字有读写权限。
确认并创建 docker 组
Docker 安装通常会自动创建 docker 组,但需验证是否存在:
- 运行
getent group docker—— 若有输出,说明组已存在; - 若无输出,执行
sudo groupadd docker手动创建。
将当前用户加入 docker 组
执行以下命令,把你的账号加入该组(-aG 表示追加,不覆盖已有组):
sudo usermod -aG docker $USER
注意:此操作不会立即在当前终端生效,需刷新会话。
立即激活组权限
无需登出或重启系统,推荐用以下任一方式生效:
-
newgrp docker—— 切换当前 shell 主组为 docker; - 或关闭终端再重新打开(图形界面下可能需重启会话)。
验证是否配置成功
运行以下命令测试权限:
-
docker run --rm hello-world—— 应正常拉取并运行镜像; -
docker ps—— 应能列出容器,不报Permission denied; -
groups—— 输出中应包含docker。
还可检查套接字权限:ls -l /var/run/docker.sock,应显示属组为 docker,且组权限含 rw-(如 srw-rw----)。
安全提醒
加入 docker 组等同授予近乎 root 的能力——可挂载任意宿主机路径、读取敏感文件、甚至逃逸到宿主机。务必:
- 仅添加可信用户;
- 避免同时配置
sudo NOPASSWD和docker组; - 生产环境建议改用 Rootless Docker 或 Podman 替代,实现更细粒度隔离。











