在 Ubuntu 系统安装 Docker 时出现权限错误,通常是由于当前用户没有权限运行 Docker 命令(需要 root 权限或属于 docker 用户组)。以下是常见问题和解决方案:
✅ 常见错误示例:
Got permission denied while trying to connect to the Docker daemon socket...
🔧 解决方案步骤
1. 确保已正确安装 Docker
先确认是否已安装 Docker。如果没有,请按官方方式安装:
# 更新包索引
sudo apt update
# 安装必要依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新包索引
sudo apt update
# 安装 Docker 引擎
sudo apt install -y docker-ce docker-ce-cli containerd.io
2. 启动并启用 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
验证服务状态:
sudo systemctl status docker
3. 将当前用户添加到 docker 用户组
这是解决权限问题的关键步骤。
sudo usermod -aG docker $USER
💡
$USER会自动替换为当前用户名。
4. 重新加载用户组权限
执行完 usermod 后,需要重新登录或刷新组权限:
方法一:重新登录系统
退出当前用户并重新登录。
方法二:使用 newgrp 命令(临时生效)
newgrp docker
方法三:重启终端或使用 su - $USER
su - $USER
5. 验证是否修复成功
不使用 sudo 运行以下命令:
docker run hello-world
如果成功拉取并运行容器,说明权限问题已解决。
⚠️ 注意事项
- 安全提示:将用户加入
docker组等同于赋予其部分root权限(因为 Docker 可以挂载任意文件系统),请确保仅信任的用户加入该组。 - 如果仍报错,请检查 Docker 守护进程是否运行:
ps aux | grep dockerd - 检查 Docker 套接字权限:
ls -l /var/run/docker.sock正常输出应包含
docker组:srw-rw---- 1 root docker ...
✅ 总结
| 步骤 | 操作 |
|---|---|
| 1 | 正确安装 Docker CE |
| 2 | 启动并启用 docker 服务 |
| 3 | 将当前用户加入 docker 组:sudo usermod -aG docker $USER |
| 4 | 重新登录或执行 newgrp docker |
| 5 | 测试:docker run hello-world |
完成以上步骤后,你应该可以无需 sudo 使用 Docker 命令了。如仍有问题,欢迎提供具体错误信息进一步排查。
PHPWP博客