could not select device driver ““ with capabilities: [[gpu]]
现象
执行如下代码
docker run -d --restart=always --gpus all --name=sglang --shm-size 32g -p 9300:30000 -v /mnt/data/app/sglang:/root/.cache/huggingface -v /mnt/data/models:/models --security-opt seccomp=unconfined --ipc=host --ulimit memlock=-1:-1 --cap-add=SYS_PTRACE c2eeba0835f1
报:
could not select device driver "" with capabilities: [[gpu]]
原因:
这个错误提示说明 Docker 无法找到具有 GPU 能力的设备驱动。这通常是因为 Docker 或者宿主机没有正确配置以支持 NVIDIA GPU。需要安装安装cuda工具
解决方案:
第一步:安装cuda工具
apt install nvidia-cuda-toolkit
第二步:nvidia-docker2
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
解释:
. /etc/os-release:加载 /etc/os-release 文件中的环境变量,这些变量描述了你当前使用的 Linux 发行版信息。
echo $ID$VERSION_ID:输出系统的 ID 和版本号,例如:
如果你是 Ubuntu 22.04,会输出 ubuntu22.04
curl -s -L ...:静默下载(不显示进度)并跟随重定向,从指定 URL 获取 GPG 公钥。
https://nvidia.github.io/nvidia-docker/gpgkey:这是 NVIDIA Docker 包的签名密钥。
| sudo apt-key add -:将下载的公钥添加到 APT 的信任密钥列表中。
https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list:根据之前获取的系统信息构造出对应的 APT 源地址。
| sudo tee /etc/apt/sources.list.d/nvidia-docker.list:将下载的内容写入一个新的 APT 源配置文件中。
在daemon.json中多了如下内容:
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
字段 | 含义 |
"runtimes" | 表示这是一个运行时配置块,可以定义多个不同的运行时(比如 runc, nvidia, kata 等) |
"nvidia" | 自定义的运行时名称,你可以通过 --runtime=nvidia 来指定使用这个运行时 |
"path" | 运行时的可执行程序路径,这里是 nvidia-container-runtime,它是 NVIDIA 提供的一个修改版的 runc,支持 GPU |
"runtimeArgs" | 启动运行时时传递的参数列表,这里为空数组表示不传额外参数 |
第三步:重启docker
sudo systemctl restart docker
第四步:再执行
docker run -d --restart=always --gpus all --name=sglang --shm-size 32g -p 9300:30000 -v /mnt/data/app/sglang:/root/.cache/huggingface -v /mnt/data/models:/models --security-opt seccomp=unconfined --ipc=host --ulimit memlock=-1:-1 --cap-add=SYS_PTRACE c2eeba0835f1