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

news2024/12/26 12:08:08

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

    • 一、Ubuntu20.04安装docker
      • (1)查看当前系统版本号和名称
      • (2)在镜像源进行源文件下载
      • (3)命令行进行安装
      • (4)配置daemon并重启docker
    • 二、Ubuntu20.04安装NVIDIA-container-toolkit
      • (1)下载安装包
      • (2)安装下载包
      • (3)重新加载daemon文件和docker
      • (4)查看nvidia-docker 版本
      • (5)配置daemon.json
    • 三、Centos7安装docker
      • (1)下载符合版本要求的docker,链接:
      • (2)解压 docker-24.0.4.tgz 文件:
      • (3)将解压出的所有Docker文件复制到 /usr/bin/ 目录下:
      • (4)创建并赋予service文件权限
      • (5)重新加载systemd守护进程以应用更改:
      • (6)启动Docker并设置开机自启动:
    • 四、Centos7安装nvidia-container-runtime
      • (1)下载符合版本要求的nvidia-container-runtime,链接:
      • (2)#解压nvidia-container-runtime.tar.gz
      • (3)安装所有rpm包
      • (4)重启容器
    • 五、拉取镜像、打包并离线加载运行、训练
      • (1)建立镜像或者拉取镜像
        • 1)建立镜像
        • 2)如果是拉取现成的镜像,可以通过docker hub等方式先在==线上==拉取
      • (2)打包镜像
      • (3)离线加载镜像
      • (4)查看当前镜像
      • (5)运行生成容器
    • 附:Error记录
      • (1)CUDA error: no kernel image is available for execution on the device
        • 1)安装CUDA-TOOLKIT
      • 2)安装cuDNN:
      • 3)卸载CUDA和cuDNN
      • 4)在docker images中安装与CUDA版本匹配的pytorch

前言:
近期因工作需在离线环境下安装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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mindspore框架利用扩散模型DDPM生成高分辨率图像|(三)模型训练与推理实践

利用扩散模型DDPM生成高分辨率图像(生成高保真图像项目实践) Mindspore框架利用扩散模型DDPM生成高分辨率图像|(一)关于denoising diffusion probabilistic model (DDPM)模型 Mindspore框架利用扩散模型DD…

告别杂音,从 AI 音频降噪开始

生活中,音频无处不在。无论是聆听动人的音乐,还是参与重要的电话会议,又或是沉浸于精彩的网课学习,清晰、纯净的音频质量都至关重要。然而,音频中的噪声却像不速之客,扰乱着这份美好。 音频中的噪声形式多样…

封装一个给 .NET Framework 用的内存缓存帮助类

前言 .NET Core 中已经内置了内存缓存相关的类和操作方法,直接就能使用,非常方便。但在 .NET Framework 中,如果想要使用内存缓存,需要自己进行封装。本文分享一个我自己项目中封装的内存缓存帮助类,有需要的童鞋可以…

前端已经学会vue,做粒子效果

目录 1. Canvas API 2. WebGL 3. 粒子系统 4. 动画与性能优化 5. 现有库和框架 6. Vue 组件和状态管理 实践项目建议 案例1 案例2雪花 已经熟悉了 Vue、TypeScript 和 JavaScript,下面是一些你可以学习的内容,以帮助你实现粒子效果的界面&#…

深度学习基础 - 梯度垂直于等高线的切线

深度学习基础 - 梯度垂直于等高线的切线 flyfish 梯度 给定一个标量函数 f ( x , y ) f(x, y) f(x,y),它的梯度(gradient)是一个向量,表示为 ∇ f ( x , y ) \nabla f(x, y) ∇f(x,y),定义为: ∇ f ( x…

单片机GPIO模式和应用

Push pull 推挽输出 定义:推挽输出是一种输出模式,其中引脚可以输出高电平或低电平,且两种电平状态下都具有较强的驱动能力。 特点: 无论输出高电平还是低电平,都有较强的电流驱动能力。 适用于驱动外部数字电路…

宝塔面板启用 QUIC 与 Brotli 的完整教程

环境 系统:Ubuntu 22.04.4 LTS x86_64 宝塔版本:7.7.0 (可使用本博客提供的一键安装优化脚本) nginx版本:1.26.1 开放UDP端口 注意:在你的服务器商家那里也要开放443 udp端口 sudo ufw allow 443/udp然后重新加载 UFW 以使新…

【漏洞复现】maxView Storage Manager 远程代码执行漏洞

maxView Storage Manager使查看、监控和配置系统中基于Microsemi RAID适配器构建的所有存储变得简单。⽅便的图形⽤户界⾯(GUI)在Microsemi产品线和⽀持的操作系统(包括 Windows、Linux、VMWare和Solaris)中的外观和操作都相同。使…

多线程编译

多线程与多进程一样,为了能同时执行多个任务 区别 多进程 创建子进程,子进程会拷贝父进程的数据段的所有内存 进程是资源的获取单位 每个进程完全独立运行 更加关注两个进程之间的通信问题 多线程 线程是进程的最小组成单位,每个进程…

代码随想录算法训练营Day32 | 56. 合并区间 | 738.单调递增的数字 | 968.监控二叉树

今日任务 56. 合并区间 题目链接&#xff1a; https://leetcode.cn/problems/merge-intervals/题目描述&#xff1a; Code class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {ranges::sort(intervals, [&…

Spring:springboot集成jetcache循环依赖问题

springboot版本&#xff1a;2.6.14 jetcache版本&#xff1a;2.6.2 启动项目报错如下&#xff1a; 解决方案&#xff1a; jetcache版本升级到2.6.4 https://github.com/alibaba/jetcache/issues/624

IT运维岗适用的6本证书

作为IT从业人员&#xff0c;不断提升自身的专业技能和知识是提升职场竞争力、助力升职加薪的重要途径。特别是在运维领域&#xff0c;虽然工作看似简单&#xff0c;但实际上需要掌握的技术知识却相当全面。为了全面提升自己的技术能力&#xff0c;并证明自己的专业能力&#xf…

每周心赏|七夕这样玩也太超前了吧,速来AI一下!

明天就是七夕节了&#xff0c;是时候给七夕节来点大震撼了&#xff0c;AI带你玩点不一样的&#xff01; 给大家挖掘了几个有梗又有爱的智能体。信我&#xff0c;快来试玩&#xff01; 不知道大家是什么人&#xff1f;反正&#xff0c;我是一个很爱测评的人&#x1f92d;&#…

【GaussDB(DWS)】数仓部署架构与物理结构分析

数仓架构与物理结构分析 一、部署架构二、物理结构三、测试验证 一、部署架构 华为数据仓库服务DWS&#xff0c;集群版本8.1.3.x 集群拓扑结构&#xff1a; 上述拓扑结构为DWS单AZ高可靠部署架构&#xff0c;为减少硬件故障对系统可用性的影响&#xff0c;建议集群部署方案遵…

制造企业技术图纸不受控的影响与规避方法

在制造企业中&#xff0c;技术图纸是产品设计、制造与检验的核心依据。若技术图纸不受控&#xff0c;将对企业造成诸多不利影响。 首先&#xff0c;产品质量无法得到保障。不受控的图纸可能存在设计缺陷、尺寸误差或工艺不合理等问题&#xff0c;导致生产出的产品不合格&#…

独辟蹊径:用Python打造你的副业帝国,迈向财富自由

在当今这个数字化时代&#xff0c;掌握一门编程语言如同拥有了一把开启无限可能的钥匙。Python&#xff0c;以其简洁的语法、强大的库支持和广泛的应用领域&#xff0c;成为了许多人实现副业收入乃至财富自由的首选工具。本文将探讨如何利用Python技能开启副业&#xff0c;并逐…

mysql中的表查询操作

performance_schema 系统数据库用于收集Mysql服务器的性能参数&#xff0c;以便数据库管理员了解产生性能瓶颈的原因。information_schema 系统数据库定义了所有数据库对象的元数据信息。 表的常规操作&#xff08;增删改查&#xff09; 我们经常对表进行以下操作 插入&#x…

OceanMind海睿思受邀参加第41届CCF中国数据库学术会议

CCF 中国数据库学术会议始于1977年&#xff0c;是由数据库专业委员会举办的中国数据库领域的最高学术会议&#xff0c;第41届中国数据库学术会议&#xff08;NDBC 2024&#xff09;将于2024年8月7日-8月10日在新疆乌鲁木齐举行。中新赛克副总兼大数据产品线总经理卢云川先生受邀…

匹配格值的前半部分

Excel有多列含空格的源数据&#xff0c;如C3:D19&#xff1b;还有若干用于比较的数据项&#xff0c;由"-"隔为前后两部分&#xff0c;如F3:F7。 要求用源数据的每列与数据项的前半部分进行比较&#xff0c;将匹配上的数据项填在该列下面。 使用 SPL XLL spl("d…

DALL•E 3 重新定义图像生成的人工智能

在人工智能的不断发展中&#xff0c;图像生成技术一直是一个备受关注的领域。OpenAI 的 DALL-E 系列自发布以来&#xff0c;便因其卓越的图像生成能力而备受瞩目。作为这一系列的最新成员&#xff0c;DALL-E 3 再次突破了技术的界限&#xff0c;为图像生成带来了全新的可能性。…