问题描述
centos7系统中,之前已经正确安装显卡驱动,并且可以在docker容器中使用GPU。退出并停止容器,一段时间后(就几个小时)重新启动容器时报错(错误信息已经忘记了,好像有容器错误和nvidia-smi-cli错误),无法进入容器。执行nvidia-smi时报错:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
原因分析:
centos系统自带的nouveau没有禁用
解决方案:
1、查看是否禁用nouveau
lsmod | grep nouveau
如果输出 nouveau信息则表示没有禁用。
2、打开blacklist.nf文件,并按字母i进入编辑模式
sudo vim /lib/modprobe.d/dist-blacklist.conf
在blacklist.conf 文件最后两行中添加下面两句,然后按Esc退出编辑模式,输入“:wq”回车表示保存并退出文件
blacklist nouveau
options nouveau modeset=0
3、备份和重建镜像(不清楚什么意思,但网上别人都是这么做的)
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
4、重启centos
reboot
成功后进入系统中(可以再执行一次lsmod | grep nouveau看是否成功禁用),不出意外的话再次执行nvidia-smi就可以正常显示显卡信息了。再次执行启动容器命令docker start 容器id,结果启动成功,后继也可以正常进入容器了。