用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
运维.售后
›
运维.售后
›
【亲测有效!】ubuntu20.04和Centos7离线安装docker及nv ...
【亲测有效!】ubuntu20.04和Centos7离线安装docker及nvidia-container-too ...
熊熊出没
论坛元老
|
2024-9-14 23:16:54
|
显示全部楼层
|
阅读模式
楼主
主题
1777
|
帖子
1777
|
积分
5331
媒介:
近期因工作需在离线环境下安装docker及nvidia-container-toolkit,探索了一番,终极可行,特此记载供参考及个人后续查看。
一、Ubuntu20.04安装docker
(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)命令行进行安装
dpkg -i ./*deb
复制代码
(4)设置daemon并重启docker
systemctl daemon-reload
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)安装下载包
dpkg -i ./lib* ./nvidia*
复制代码
(3)重新加载daemon文件和docker
systemctl daemon-reload
systemctl restart docker
复制代码
(4)查看nvidia-docker 版本
nvidia-docker -v
nvidia-docker version
复制代码
(5)设置daemon.json
在/etc/docker/daemon.json一开始加上:
"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 文件:
tar xzvf docker-25.0.0.tgz
复制代码
(3)将解压出的所有Docker文件复制到 /usr/bin/ 目次下:
cp ./docker/* /usr/bin/
复制代码
(4)创建并赋予service文件权限
cd /etc/systemd/system
touch docker.service
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 文件执行权限:
chmod 644 /etc/systemd/system/docker.service
复制代码
(5)重新加载systemd守护历程以应用更改:
systemctl daemon-reload
复制代码
(6)启动Docker并设置开机自启动:
systemctl start docker
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
tar -zxvf nvidia-container-runtime.tar.gz
复制代码
(3)安装所有rpm包
cd nvidia-container-runtime
rpm -Uvh --force --nodeps *.rpm
复制代码
(4)重启容器
systemctl restart docker
复制代码
查看安装结果
whereis nvidia-container-runtime
复制代码
五、拉取镜像、打包并离线加载运行、练习
(1)建立镜像大概拉取镜像
1)建立镜像
docker build -t 镜像REPOSITORY:tag
# 例如: .docker build -t 777888:v1
复制代码
2)假如是拉取现成的镜像,可以通过docker hub等方式先在线上拉取
docker pull 777888:v1
复制代码
(2)打包镜像
docker save -o 777888.tar
复制代码
(3)离线加载镜像
在离线环境下,导入镜像的TAR包,通过下述命令加载:
docker load -i 777888.tar
复制代码
(4)查看当前镜像
docker images
复制代码
(5)运行天生容器
当不使用GPU时:
docker run -it --shm-size 64G -v /home/docker/labelTransform:/usr/src/app/datasets --name 777888 777888:v1
复制代码
当使用GPU时:
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
查看显卡型号:
lspci | grep -i vga
lspci | grep -i nvidia
复制代码
查看CUDA是否安装及版本号:
nvcc -V
复制代码
确认镜像中是否可以使用pytorch并调用CUDA计算,以及匹配的CUDA版本
python
import torch
torch.cuda.is_available()
torch.zeros(1).cuda()
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
找到符合要求的版本,下载到当地,导入离线的宿主机进行安装。
运行安装:
chmod +x cuda_10.2.89_440.33.01_linux.run
./cuda_10.2.89_440.33.01_linux.run --no-opengl-libs
复制代码
选中必要的,空缺表示不选中,由于宿主机在题目之前单独安装了显卡驱动,不再进行选中:
CUDA Installer
- [ ] Driver
[ ] 460.32.03
+ [X] CUDA Toolkit 11.2
[X] CUDA Samples 11.2
[X] CUDA Demo Suite 11.2
[X] CUDA Documentation 11.2
Options
Install
复制代码
设置环境:
vim /etc/profile
复制代码
添加下面两行,路径要和上图中一样
export PATH=/usr/local/cuda-11.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
复制代码
保存并重新加载
source /etc/profile
复制代码
2)安装cuDNN:
打开下方链接,下载符合版本的:
https://developer.nvidia.com/rdp/cudnn-archive
解压:
tar -xvf cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz
复制代码
安装:
cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
复制代码
测试宿主机当地CUDA:
nvcc -V
复制代码
3)卸载CUDA和cuDNN
假如当地已经有CUDA但是版本不对,可使用下述方式卸载
cd /usr/local/cuda-11.3/bin
sudo ./cuda-uninstaller
cd /usr/local/
sudo rm -r cuda-11.3
sudo dpkg -l |grep cuda
sudo dpkg -P cuda-visual-tools-11-3
复制代码
4)在docker images
中安装与CUDA版本匹配的pytorch
卸载原有的torch和torchvision
pip uninstall torch torchaudio torchvision
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:
安装:
pip install torch-1.10.0+cu113-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.11.1+cu113-cp38-cp38-linux_x86_64.whl
复制代码
测试镜像中torch与CUDA是否都可调用:
python
import torch
torch.cuda.is_available()
torch.zeros(1).cuda()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
熊熊出没
论坛元老
这个人很懒什么都没写!
楼主热帖
数据库的三大范式
创建SQL server服务器
在字节跳动干软件测试5年,4月无情被辞 ...
2年自动化测试经验,连基础的都不会, ...
TortoiseGit间接处理linux目录下的仓库 ...
神经网络与深度学习
Java 知识 - 接口代理
django小项目 ----- 创建错题集 ...
ZYNQ从放弃到入门(十二)- AMP — Zyn ...
基于遗传算法的最优潮流问题的研究(Ma ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
虚拟化与私有云
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表