【亲测有效!】ubuntu20.04和Centos7离线安装docker及nvidia-container-too ...

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

媒介:
近期因工作需在离线环境下安装docker及nvidia-container-toolkit,探索了一番,终极可行,特此记载供参考及个人后续查看。
一、Ubuntu20.04安装docker

(1)查看当前系统版本号和名称

  1. lsb_release -a
复制代码
我的是ubuntu20.04,focal
(2)在镜像源进行源文件下载

https://download.docker.com/linux/ubuntu/dists/
查找符合版本要求的文件,如我的系统对应:https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/链接下的文件。
下载下方四个文件:
   containerd.io_xxx_amd64.deb
docker-ce_xxx_amd64.deb
docker-ce-cli_xxx_amd64.deb
docker-ce-rootless-extras_xxx_amd64.deb

  (3)命令行进行安装

  1. dpkg -i ./*deb
复制代码
(4)设置daemon并重启docker

  1. systemctl daemon-reload
  2. systemctl restart docker
复制代码
二、Ubuntu20.04安装NVIDIA-container-toolkit

(1)下载安装包

链接:https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/
上述链接不必要翻墙
文件包罗:
   libnvidia-container1_xxx_amd64.deb
libnvidia-container-tools_xxx_amd64.deb nvidia-docker2_xxx_all.deb
nvidia-container-runtime_xxx_all.deb
nvidia-container-toolkit_xxx_amd64.deb
  

(2)安装下载包

  1. dpkg -i ./lib*  ./nvidia*
复制代码
(3)重新加载daemon文件和docker

  1. systemctl daemon-reload
  2. systemctl restart docker
复制代码
(4)查看nvidia-docker 版本

  1. nvidia-docker -v
  2. nvidia-docker version
复制代码
(5)设置daemon.json

在/etc/docker/daemon.json一开始加上:
  1. "default-runtime": "nvidia",
复制代码
如下图所示:

三、Centos7安装docker

(1)下载符合版本要求的docker,链接:

链接:https://download.docker.com/linux/static/stable/x86_64/
大概通过网盘下载:
链接: https://pan.baidu.com/s/1azluoUSE_lwCaSjV_J9EtA?pwd=ijf7 提取码: ijf7
将下载的 docker-25.0.0.tgz文件上传到CentOS 7系统。例如,可以上传到 /root 目次下。
(2)解压 docker-24.0.4.tgz 文件:

  1. tar xzvf docker-25.0.0.tgz
复制代码
(3)将解压出的所有Docker文件复制到 /usr/bin/ 目次下:

  1. cp ./docker/* /usr/bin/
复制代码
(4)创建并赋予service文件权限

  1. cd /etc/systemd/system
  2. touch docker.service
  3. sudo gedit docker.service
复制代码
将以下内容复制到 docker.service 文件中:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

赋予 docker.service 文件执行权限:
  1. chmod 644 /etc/systemd/system/docker.service
复制代码
(5)重新加载systemd守护历程以应用更改:

  1. systemctl daemon-reload
复制代码
(6)启动Docker并设置开机自启动:

  1. systemctl start docker
  2. systemctl enable docker
复制代码
四、Centos7安装nvidia-container-runtime

(1)下载符合版本要求的nvidia-container-runtime,链接:

链接: https://pan.baidu.com/s/1fRkTfWnmeLTVkNhtCntP5A?pwd=t8aq 提取码: t8aq
(2)#解压nvidia-container-runtime.tar.gz

  1. tar -zxvf nvidia-container-runtime.tar.gz
复制代码
(3)安装所有rpm包

  1. cd nvidia-container-runtime
  2. rpm -Uvh --force --nodeps *.rpm
复制代码
(4)重启容器

  1. systemctl restart docker
复制代码
查看安装结果
  1. whereis  nvidia-container-runtime
复制代码
五、拉取镜像、打包并离线加载运行、练习

(1)建立镜像大概拉取镜像

1)建立镜像

  1. docker build -t 镜像REPOSITORY:tag
  2. # 例如: .docker build -t 777888:v1
复制代码
2)假如是拉取现成的镜像,可以通过docker hub等方式先在线上拉取

  1. docker pull 777888:v1
复制代码
(2)打包镜像

  1. docker save -o 777888.tar
复制代码
(3)离线加载镜像

在离线环境下,导入镜像的TAR包,通过下述命令加载:
  1. docker load -i 777888.tar
复制代码
(4)查看当前镜像

  1. docker images
复制代码
(5)运行天生容器

当不使用GPU时:
  1. docker run -it --shm-size 64G  -v  /home/docker/labelTransform:/usr/src/app/datasets --name 777888 777888:v1
复制代码
当使用GPU时:
  1. docker run --runtime=nvidia --gpus all   -it --shm-size 64G  -v  /home/docker/labelTransform:/usr/src/app/datasets --name y777888 777888:v1
复制代码
-v表示挂载当地路径路径“/home/docker/labelTransform”到容器路径“/usr/src/app/datasets”,自动进入容器中,可以开始相关操作了。
附:Error记载

(1)CUDA error: no kernel image is available for execution on the device

查看显卡型号:
  1. lspci | grep -i vga
  2. lspci | grep -i nvidia
复制代码
查看CUDA是否安装及版本号:
  1. nvcc -V
复制代码
确认镜像中是否可以使用pytorch并调用CUDA计算,以及匹配的CUDA版本
  1. python
  2. import torch
  3. torch.cuda.is_available()
  4. torch.zeros(1).cuda()
  5. print(torch.version.cuda)
复制代码
发现,针对NVIDIA A800显卡算力,CUDA10.2无法匹配,而准备的镜像中,pytorch等相关包都是匹配CUDA10.2的。
!!!重点:!!!
显卡算力必要与CUDA相匹配,而docker镜像中的torch和torchvision必要与CUDA版本相匹配
显卡算力查询网址:https://developer.nvidia.com/cuda-gpus#compute
CUDA与显卡算力匹配表:
针对此,定位题目为宿主机显卡算力、CUDA以及镜像中pytorch不匹配题目。
针对宿主机显卡型号A800,基于上述CUDA与算力匹配表11.3版本的CUDA(实际上显卡驱动是535.54.03,CUDA可以接收的最高版本是12.2(可通过nvidia-smi查看),但是中庸之道甚好,就选个中间的,也方便适配pytorch),因此下载安装CUDA11.3+cuDNN。
1)安装CUDA-TOOLKIT

https://developer.nvidia.com/cuda-toolkit-archive
https://developer.nvidia.com/cuda-10.2-download-archive?target_os=Linux&target_arch=x86_64&target_distro=CentOS&target_version=8&target_type=runfilelocal
也准备了网盘的,供下载:
链接: https://pan.baidu.com/s/1nFfAHAb97s_08zAHLaxJBg?pwd=vs5v 提取码: vs5v
找到符合要求的版本,下载到当地,导入离线的宿主机进行安装。
运行安装:
  1. chmod +x cuda_10.2.89_440.33.01_linux.run
  2. ./cuda_10.2.89_440.33.01_linux.run --no-opengl-libs
复制代码
选中必要的,空缺表示不选中,由于宿主机在题目之前单独安装了显卡驱动,不再进行选中:
  1. CUDA Installer
  2. - [ ] Driver
  3.      [ ] 460.32.03
  4. + [X] CUDA Toolkit 11.2
  5.   [X] CUDA Samples 11.2
  6.   [X] CUDA Demo Suite 11.2
  7.   [X] CUDA Documentation 11.2
  8.   Options
  9.   Install
复制代码
设置环境:
  1. vim /etc/profile
复制代码
添加下面两行,路径要和上图中一样
  1. export PATH=/usr/local/cuda-11.3/bin:$PATH
  2. export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
复制代码
保存并重新加载
  1. source /etc/profile
复制代码
2)安装cuDNN:

打开下方链接,下载符合版本的:
https://developer.nvidia.com/rdp/cudnn-archive
解压:
  1. tar -xvf cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz
复制代码
安装:
  1. cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
  2. cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
  3. chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
复制代码
测试宿主机当地CUDA:
  1. nvcc -V
复制代码
3)卸载CUDA和cuDNN

假如当地已经有CUDA但是版本不对,可使用下述方式卸载
  1. cd  /usr/local/cuda-11.3/bin
  2. sudo ./cuda-uninstaller
  3. cd /usr/local/
  4. sudo rm -r cuda-11.3
  5. sudo dpkg -l |grep cuda
  6. sudo dpkg -P cuda-visual-tools-11-3
复制代码
4)在docker images
中安装与CUDA版本匹配的pytorch


卸载原有的torch和torchvision
  1. pip uninstall torch torchaudio torchvision
  2. pip uninstall torch-geometric torch-scatter torch-sparse torch-cluster torch-spline-conv
复制代码
下载链接:
http://download.pytorch.org/whl/torch_stable.html
下载与python版本和CUDA版本匹配的torch与torchvision:
安装:
  1. pip install torch-1.10.0+cu113-cp38-cp38-linux_x86_64.whl
  2. pip install torchvision-0.11.1+cu113-cp38-cp38-linux_x86_64.whl
复制代码
测试镜像中torch与CUDA是否都可调用:
  1. python
  2. import torch
  3. torch.cuda.is_available()
  4. torch.zeros(1).cuda()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表