更新GPU驱动后Docker无法调用GPU问题求助
解决Docker无法识别GPU的问题
1. 检查Docker Daemon的NVIDIA Runtime配置
查看/etc/docker/daemon.json文件,确认包含NVIDIA runtime的配置:
{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
如果文件不存在或配置缺失,手动创建/修改后,重启Docker服务:
systemctl restart docker
2. 验证NVIDIA容器组件安装完整性
- 检查
nvidia-container-toolkit是否安装:rpm -qa | grep nvidia-container-toolkit - 确认
nvidia-container-runtime可执行文件存在:
若找不到该文件,重新安装runtime包:which nvidia-container-runtimeyum install nvidia-container-runtime
3. 确保驱动与容器镜像版本兼容
执行宿主机的nvidia-smi,查看右上角标注的CUDA Version(这是驱动支持的最高CUDA版本),确保你使用的Docker镜像(如nvidia/cuda:11.4.0-base-ubuntu20.04)的CUDA版本不超过该数值。若版本不匹配,更换对应版本的镜像(比如使用nvidia/cuda:latest自动匹配驱动版本)。
4. 检查Docker是否识别NVIDIA Runtime
执行以下命令,确认输出中包含nvidia runtime:
docker info | grep -i runtime
若未找到,说明Docker未加载NVIDIA runtime,需重新检查daemon.json配置,或执行自动配置命令:
nvidia-ctk runtime configure --runtime=docker systemctl restart docker
5. 排查SELinux限制
CentOS默认开启SELinux,可能干扰NVIDIA容器工具包的正常运行。临时关闭SELinux测试:
setenforce 0
若问题解决,需为NVIDIA容器配置SELinux规则(或根据需求调整SELinux策略),避免后续重启后问题复发。
6. 验证基础镜像运行
完成上述步骤后,用官方基础镜像测试:
docker run --rm --gpus all nvidia/cuda:latest nvidia-smi
若能正常输出GPU信息,说明问题已解决。
内容的提问来源于stack exchange,提问作者hohohohoho
相关产品推荐
相关产品推荐

