centos7离线安装支持容器的GPU环境

前言

有时生产环境无法连外网,为了让AI应用以容器的方式在GPU机器上跑起来,有很多软件要安装,软件的依赖关系较麻烦,这里将一次可行的安装过程记录下。

一些说明

  • 物理机只需安装nvidia驱动,不用装cuda,镜像里面有就可以了。
  • 为了让docker容器的nvidia穿透到宿主机上需要安装下面四个插件。注意安装这几个插件后要执行 systemctl restart docker 重启docker服务才行。
yum install nvidia-container-toolkit-1.7.0-1.x86_64.rpm  nvidia-container-runtime-3.7.0-1.noarch.rpm libnvidia-container-tools-1.7.0-1.x86_64.rpm libnvidia-container1-1.7.0-1.x86_64.rpm
复制代码

安装显卡驱动

驱动依赖包

  • dkms,选择适当的版本,例如dkms-2.2.0.3-30.git.7c3e7c5.el7.noarch.rpm。

驱动包

到官网选择对应的显卡和操作系统的版本,然后点击下载。www.nvidia.cn/Download/in…

image

比如下载的包为: nvidia-driver-local-repo-rhel7-450.172.01-1.0-1.x86_64.rpm

接着执行下列命令进行安装。

rpm -ivh nvidia-driver-local-repo-rhel7-450.172.01-1.0-1.x86_64.rpm
yum clean all
yum install cuda-drivers
复制代码

最后执行 nvidia-smi 命令看是否成功,成功会有如下图的输出。(注:如果安装正确但该命令执行不成功则需要重启服务器)

安装docker

在本地docker下载生产环境对应的操作系统的版本,比如生产环境是centos7.3则下一个centos7.3镜像。总体思路是,先在本地centos7.3容器中下载好docker安装的相关依赖包,然后将这些离线包上传到生产系统进行离线安装。

在本地环境构建安装软件

  1. 先执行下列命令创建目录存放安装包。
mkdir -p /home/package/docker
mkdir -p /home/package/docker/Docker_install_RPM
mkdir -p /home/package/docker/yum-utils
mkdir -p /home/package/docker/nvidia-docker-plugin
复制代码
  1. 下载yum-utils包到yum-utils目录。
cd /home/package/docker/yum-utils
yum install -y yum-utils --downloadonly --downloaddir ./
复制代码
  1. 由于yum源没有docker安装包,所以需要先安装EPLE源,不然下载不了docker包,安装时也要用到EPLE源。将EPLE下载到docker目录中并安装。
cd /home/package/docker/
yum install -y epel-release --downloadonly --downloaddir ./
rpm -ivh epel-release-7-11.noarch.rpm
复制代码
  1. 下载docker包到Docker_install_RPM目录
cd /home/package/docker/Docker_install_RPM
yum -y install docker-ce --downloadonly --downloaddir ./

复制代码
  1. 下载nvidia-docker运行相关插件到nvidia-docker-plugin目录。
cd /home/package/docker/nvidia-docker-plugin
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
yum -y install nvidia-container-toolkit --downloadonly --downloaddir ./
yum -y install nvidia-container-runtime --downloadonly --downloaddir ./
yum -y install libnvidia-container-tools --downloadonly --downloaddir ./
yum -y install libnvidia-container1 --downloadonly --downloaddir ./
复制代码
  1. 在docker目录下编写离线安装脚本 docker_offline_install.sh。
vi docker_offline_install.sh
复制代码
#!/bin/bash
echo "#####################1 开始安装yum-utils#############################"
rpm -ivh yum-utils/* --nodeps --force
echo "#####################2 开始安装 epel库文件 ################################"
rpm -ivh epel-release-7-11.noarch.rpm
echo "#####################3 开始安装Docker ####################################"
rpm -ivh Docker_install_RPM/* --nodeps --force
echo "#####################4 开始安装Nvidia-Docker插件 ####################################"
rpm -ivh nvidia-docker-plugin/* --nodeps --force
echo "#####################5 启动Docker服务 ####################################"
systemctl start docker
echo "#####################6 Docker 版本查看####################################"
docker version

复制代码
  1. 最终目录结构如下。

  1. 打包所有文件。
tar czvf docker.tar.gz /home/package/docker/
复制代码
  1. 将压缩包拷贝到物理机上。
docker cp magical_wescoff:/home/package/docker.tar.gz d:/
复制代码

生产环境离线安装

  1. 将压缩包拷贝到生产环境,对其进行解压并执行docker_offline_install.sh脚本进行离线安装。
tar -xzvf docker.tar.gz
cd home/package/docker
chmod +x docker_offline_install.sh
./docker_offline_install.sh
复制代码
  1. 如果报下面的错误则很可能是,docker容器的nvidia穿透到宿主机上的四个插件没有安装好。
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
复制代码

可以用以下命令重新安装好。

yum install nvidia-container-toolkit-1.7.0-1.x86_64.rpm  nvidia-container-runtime-3.7.0-1.noarch.rpm libnvidia-container-tools-1.7.0-1.x86_64.rpm libnvidia-container1-1.7.0-1.x86_64.rpm
复制代码

装好后记得重启docker服务才行。

systemctl restart docker
复制代码

本公众号专注于人工智能、读书与感想、聊聊数学、计算机科学、分布式、机器学习、深度学习、自然语言处理、算法与数据结构、Java深度、Tomcat内核等。

作者简介:笔名seaboat,擅长人工智能、计算机科学、数学原理、基础算法。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《人工智能原理科普》、《图解Java并发原理》。

Guess you like

Origin juejin.im/post/7066566268379201544