Docker无法选择GPU驱动报错求助:原正常运行现故障
数周前我的Docker容器还能正常访问GPU(最后一次成功运行是8月31日),但现在回到项目时出现报错:docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
已尝试重新安装docker、nvidia-docker2和nvidia-container-toolkit,操作前后及过程中均重启过实例,但问题依旧。Docker镜像未改动,推测是这段时间的CUDA更新之类的操作破坏了硬件与Docker的连接,不知道下一步该怎么处理。
环境配置
- AWS EC2 g5.4xlarge实例
- Amazon Linux 2系统
- NVIDIA A10G显卡
- NVIDIA-SMI 510.47.03(驱动版本510.47.03,CUDA版本11.6)
- Docker版本20.10.17, build 100c701
复现命令
sudo docker run --rm --gpus all nvidia/cuda:11.6.0-base-ubuntu20.04 nvidia-smi
1. 检查NVIDIA容器运行时配置
执行命令确认Docker是否识别到NVIDIA runtime:docker info | grep -i nvidia
如果输出无Runtime: nvidia相关内容,需手动配置:
- 编辑
/etc/docker/daemon.json,确保内容包含:
{ "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
- 重启Docker服务:
sudo systemctl restart docker
2. 重新配置NVIDIA容器工具包
执行nvidia-container-cli -k list检查工具包是否能识别GPU驱动,若报错则重新配置repo并安装:
sudo yum-config-manager --add-repo https://nvidia.github.io/nvidia-docker/amzn2/nvidia-docker.repo sudo yum clean expire-cache sudo yum install -y nvidia-container-toolkit
安装完成后重启Docker。
3. 修复内核与驱动兼容性
Amazon Linux 2更新后可能更换内核,导致NVIDIA驱动与当前内核不匹配:
- 查看当前内核版本:
uname -r - 检查对应内核的NVIDIA驱动模块:
ls /usr/lib/modules/$(uname -r)/kernel/drivers/video/nvidia.ko
若找不到模块,重新安装适配当前内核的驱动:
sudo yum remove -y nvidia-driver-latest-dkms sudo yum install -y nvidia-driver-latest-dkms
安装后重启实例。
4. 检查SELinux限制
临时关闭SELinux测试是否是权限问题:sudo setenforce 0
若问题解决,需永久调整SELinux配置:
编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启实例。
5. 调整GPU设备权限
检查主机GPU设备权限:ls -l /dev/nvidia*
确保Docker用户组拥有访问权限:
sudo usermod -aG docker $USER sudo chmod 666 /dev/nvidia*
重新登录或重启Docker服务后重试。
内容的提问来源于stack exchange,提问作者Matt

