1. 问题背景与解决方案概述
最近在部署AI应用时,不少开发者遇到了"could not select device driver...with capabilities: [[gpu]]"这个经典错误。这个报错通常发生在Docker容器中尝试调用NVIDIA GPU时,本质上是系统缺少必要的GPU驱动支持层。作为一名长期在AI基础设施领域踩坑的老兵,我总结了一套稳定可靠的解决方案。
这个问题的核心在于缺少nvidia-container-runtime组件。它是连接Docker容器和宿主机GPU驱动的桥梁,相当于一个翻译官,让容器内的应用能够安全地访问物理GPU资源。没有它,就像你带着中文说明书去国外修车,技师根本看不懂你的需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与前置检查
2.1 硬件与驱动基础验证
在开始安装前,请先确认以下基础环境:
bash复制# 检查NVIDIA驱动是否安装
nvidia-smi
# 检查Docker服务状态
systemctl status docker
# 检查CUDA版本(如果已安装)
nvcc --version
重要提示:如果nvidia-smi命令报错,说明基础驱动未正确安装,需要先解决这个问题。可以参考NVIDIA官方文档安装对应版本的驱动。
2.2 系统兼容性确认
目前主流支持的系统包括:
- Ubuntu 18.04/20.04/22.04
- CentOS 7/8
- RHEL 7/8
特别注意:CentOS 7需要确保内核版本不低于3.10.0-693(通过uname -r查看),否则可能出现兼容性问题。
3. CentOS系统安装指南
3.1 离线安装方案
对于内网环境或无法连接NVIDIA官方源的情况,可以采用离线安装包。以下是详细步骤:
-
下载离线包(包含以下组件):
- libnvidia-container
- nvidia-container-toolkit
- nvidia-container-runtime
-
安装依赖:
bash复制sudo yum install -y tar bzip2 make automake gcc gcc-c++
- 强制安装所有rpm包(忽略依赖检查):
bash复制sudo rpm -Uvh --force --nodeps *.rpm
- 配置Docker使用nvidia运行时:
bash复制sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
