docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]] Run 'docker run --help' for more information
时间: 2025-07-04 21:15:02 浏览: 14
在 Docker 容器中使用 GPU 时,遇到 `could not select device driver "" with capabilities: [[gpu]]` 错误通常表明 Docker 无法正确识别或访问宿主机上的 NVIDIA GPU 驱动。以下是解决该问题的完整方案:
### 检查并安装 NVIDIA 驱动
确保系统中已正确安装 NVIDIA 显卡驱动。可以通过以下命令检查驱动是否正常加载:
```bash
nvidia-smi
```
如果未显示 GPU 信息,则需要从 NVIDIA 官网下载并安装对应显卡型号的驱动。
### 安装 NVIDIA Container Toolkit
Docker 要支持 GPU,必须安装 NVIDIA 提供的容器工具链,包括 `nvidia-container-toolkit` 和相关组件。具体步骤如下:
1. **添加 NVIDIA 的软件源**:
根据操作系统类型(如 Ubuntu、CentOS 等)配置对应的仓库。例如,在基于 Ubuntu 的系统上执行:
```bash
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
```
2. **更新包索引并安装组件**:
```bash
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
```
3. **重启 Docker 服务**:
```bash
sudo systemctl restart docker
```
### 配置 Docker 使用 NVIDIA 容器运行时
编辑 `/etc/docker/daemon.json` 文件,添加以下内容以启用 NVIDIA 容器运行时:
```json
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
```
保存后重启 Docker 服务[^4]:
```bash
sudo systemctl restart docker
```
### 验证 GPU 是否可用
运行以下测试容器验证 GPU 是否成功分配给 Docker 容器:
```bash
docker run --rm --gpus all nvidia/cuda:11.6.0-base nvidia-smi
```
如果成功输出当前 GPU 状态信息,则说明 GPU 已被 Docker 正确识别和使用[^1]。
### 常见问题排查
- **权限问题**:确保用户有权限访问 Docker 和 NVIDIA 设备。
- **CUDA 版本兼容性**:确认容器内使用的 CUDA 版本与宿主机驱动兼容。
- **SELinux/AppArmor**:某些安全策略可能阻止 Docker 访问 GPU,可尝试临时禁用这些模块进行测试。
---
阅读全文