AI的小伙伴都晓得,想要跑算法就得使用NVIDIA的GPU。今天用docker部署AI项目。先简单介绍下docker
一 、docker19.03以前的事情
1.1 指定显卡硬件名
最初的容器中使用显卡,需要指定硬件名。具体怎么操作,我这里不做细说,可以参考这个博主
https://www.cnblogs.com/linhaifeng/p/16108285.html
查看docker版本
docker version
二、docker 19.03后
在docker19以前的版本都需要单独下载nvidia-docker1或nvidia-docker2来启动容器,自从升级了docker19后跑需要gpu的docker只需要加个参数–gpus all 即可(表示使用所有的gpu,如果要使用2个gpu:–gpus 2,也可直接指定哪几个卡:–gpus ‘“device=1,2”’,后面有详细介绍)。
1.安装nivida驱动
1.1查看显卡型号。
lspci | grep-i nvidia 或者 lspci -vnn | grep VGA
1.2到官网下载驱动
将下载好的NVIDIA-Linux-xxx-xxx.run文件放在英文路径下。
1.3 卸载centos自带的驱动
yum remove xorg-x11-drv-nouveau.x86_64
1.4 切换到驱动(xxx.run)目录,即cd xxx
1.5 安装驱动
首先赋权限:chmod 755 ***.run,就是给所有.run文件赋予权限
安装驱动:./NVIDIA-Linux-xxx-xxx.run
1.6 修改grub启动配置
使用vim编辑grub文件,vim /etc/default/grub
insert键切换插入模式
在GRUB_CMDLINE_LINUX那行添加rd.driver.blacklist=nouveau nouveau.modeset=0,变成 GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=************* rhgb quiet rd.driver.blacklist=nouveau nouveau.modeset=0"
然后保存退出(先按“ESC”退出文本插入模式,然后输入 :wq)并更新grub:
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/grub2/grub.efi.cfg
1.7 打开/usr/lib/modprobe.d/dist-blacklist.conf
把 blacklist nvidiafb 改成 #blacklist nvidiafb(注释掉),然后在最下面添加:
blacklist nouveau
options nouveau modeset=0
然后保存并退出
1.8 备份initramfs nouveau img镜像
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
1.9 使用dracut重新构建initramfs
dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
1.10 重启centos使用reboot
1.11 输入lsmod | grep nouveau 查看是否禁用成功,没有输出则成功
1.12 安装gcc 和 make编译工具
yum install gcc
yum install make
1.13 安装与内核版本一直的kernel-headers和kernel-devel
先输入 uname -r 查看内核版本,我的内核版本如下:
4.18.0-348.el8.x86.64
输入
dnf install kernel-headers-4.18.0-348.el8.x86.64
输入
dnf install kernel-devel-4.18.0-348.el8.x86.64
再输入
dnf remove kernel-headers-4.18.0-348.7.1.el8_5.x86.64
卸载原来版本的kernel-headers,再输入 dnf list kernel* 查看版本是否与内核一致