> 技术文档 > docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]].

docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]].

这个错误表明Docker无法识别或加载支持GPU所需的设备驱动程序。以下是完整的解决方案和根本原因分析,结合最新技术和实践整理:


根本原因分析

  1. 缺少NVIDIA Container Toolkit
    现代Docker依赖NVIDIA Container Toolkit(前身为nvidia-docker2)实现GPU透传,未安装时无法调用GPU驱动。
  2. Docker配置未启用NVIDIA运行时
    需在daemon.json中声明NVIDIA运行时,否则Docker引擎无法识别GPU设备。
  3. 驱动或工具包版本不兼容
    主机NVIDIA驱动版本需与容器要求的CUDA版本兼容(可通过nvidia-smi验证驱动版本)。
  4. 重启服务导致配置未生效
    安装工具包或修改配置后必须重启Docker服务。

完整解决方案

步骤1:验证主机GPU环境
nvidia-smi # 确认驱动正常安装,输出应包含GPU型号和驱动版本

若命令未找到,需先安装NVIDIA驱动。

步骤2:安装NVIDIA Container Toolkit

Ubuntu/Debian系统:

# 添加仓库并安装distribution=$(. /etc/os-release; echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed \'s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g\' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listsudo apt-get updatesudo apt-get install -y nvidia-container-toolkit

CentOS/RHEL系统:
参见NVIDIA官方指南。

步骤3:配置Docker使用NVIDIA运行时
sudo tee /etc/docker/daemon.json <<EOF{ \"runtimes\": { \"nvidia\": { \"path\": \"nvidia-container-runtime\", \"runtimeArgs\": [] } }, \"default-runtime\": \"nvidia\" # 可选:设为默认运行时}EOFsudo systemctl restart docker # 重启Docker生效
步骤4:验证GPU容器运行
docker run --rm --gpus all nvidia/cuda:11.8.0-base nvidia-smi # 应输出与主机相同的GPU信息

特殊情况处理

  1. Windows/macOS环境
    Docker Desktop默认无GPU支持,需:

    • Windows:安装WSL2并在Linux子系统内配置。
    • macOS:仅部分M系列芯片支持,需使用Docker Desktop 4.25+。
  2. docker-compose启用GPU
    在服务配置中添加deploy.resources段:

    services: ai-service: deploy: resources: reservations: devices: - driver: nvidia  count: 1 # 使用1块GPU  capabilities: [gpu]
  3. 离线安装
    下载离线包(libnvidia-container、nvidia-container-toolkit),手动安装后重启服务。


验证与调试

  • 检查工具包状态dpkg -l | grep nvidia-container-toolkit
  • 查看Docker运行时docker info | grep -i nvidia
  • 错误日志定位journalctl -u docker.service | grep -i gpu

⚠️ 注意:若仍报错,尝试重启主机以加载内核模块(常见于Ubuntu)。