root@iZ6webii7wmpw2doxttifuZ:~# docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
root@iZ6webii7wmpw2doxttifuZ:~#
这个报错的意思是:Docker 试图给容器分配“GPU 能力”,但宿主机上没有可用的 NVIDIA 设备驱动供 Docker 调用。通常有三种原因:
1. 机器根本没 GPU(常见于云主机选了非 GPU 规格);
2. 宿主机没装/没好 NVIDIA 驱动(nvidia-smi 在宿主机都跑不通);
3. 已有驱动,但NVIDIA Container Toolkit(nvidia-docker 组件)没装或没配置给 Docker。
下面按“从快到慢”给你一个一次跑通的排查/修复顺序(Ubuntu/Debian 系):
⸻
- 先确认这台机器真的有 GPU
lspci | egrep -i 'nvidia|vga'
# 有 NVIDIA 字样才说明是 GPU 机型;没有基本就是非 GPU 规格
- 驱动是否正常(非常关键)
nvidia-smi
# 能打印出驱动版本、显卡型号、进程表 = 驱动OK
# 报错/命令不存在 => 先安装/修复宿主机显卡驱动,再继续
如果这里就失败了,后面的容器步骤都不会成功。先把驱动装好(云厂商 GPU 镜像通常自带驱动;否则按厂商/发行版指南安装)。
- 安装并配置 NVIDIA Container Toolkit
# 添加 NVIDIA 仓库并安装(APT 系)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 让 Docker 认识 NVIDIA 运行时并重启
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
- 验证 Docker 能看到 GPU
# 看看 Docker 是否已经登记了 nvidia 运行时
docker info | sed -n '/Runtimes/,/Default/p'
# 期望能看到 nvidia 在 Runtimes 列表里
# 最终测试
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
⸻
仍有问题?对照这几个典型症状:
• docker info 里没有 nvidia
重新执行:sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker
• nvidia-smi 在宿主机都不工作
驱动没装好或不是 GPU 机型。先解决驱动/机型再谈容器。
• 驱动刚升级后报 “Driver/library version mismatch”
重启一次宿主机或至少 systemctl restart docker,并换用与驱动匹配的 CUDA 基础镜像再试。
1万+

被折叠的 条评论
为什么被折叠?



