Docker+Anaconda+CUDA+cuDNN

一、导语

因为要复现文献的需求和实验室里师兄想要给我提升能力的多方面因素在一起,所以学习并实现了相关安装。在这里做一个记录,方便日后查看,如果能给其他同学带来便捷就更好了。

在这篇文章中,我的目标是搭建一个可以使用Pytorch的容器。

二、前置工作

首先要能够连接上服务器,不同实验室用的不一样,我们使用的是xshell和xftp,这里推荐一下,学习可以看B站视频。不同的实验室可能设置了局域网,这个需要各位自己去了解,我们是用的软件是EasyConnect。

我所在的实验室,师兄师姐们所用的服务器已经有了初步的配置,比如docker已经安装好了,好多镜像已经装好了,所以这里就不需要我再去安装了,但是需要我自己配置(因为只是给我分配了一个账户)。

首先需要学会一些基础的docker语法,这个在菜鸟教程就可以学会。当然了,如果希望学习原理,可以看这个B站的视频来学(不用全部学习,挑着学就可以)

三、搭建容器

1、查看镜像

首先使用docker images查看是否存在需要的镜像,存在即直接使用,否则需要去dockerhub官网去查找,然后下载。

docker images

看一下我的运行情况:

可以看到很多镜像,这些镜像就是一个又一个的模板。然后你可以使用这些模板创建自己的操作系统。

显然,我打算做人工智能的工作,进行深度学习的话,免不了用GPU,那么带英伟达驱动的镜像就很有必要了。当然了,再次感谢我的前辈们已经下载好了镜像,如果没有下载好镜像,一定要查看本机的显卡适配的cuda去找镜像下载!(这个教程很好找的,我自己笔记本配置GPU自学的时候就能在网上找到很多教程)

2、创建容器

所谓容器 ,就是根据模板(镜像)创建的一个操作系统,不同的容器之间互不干扰。

来看一下示例代码:

docker run --gpus all -d -p 0.0.0.0:10790:22 -it --name=karmadock -v /data/fuyp:/root nvidia/cuda /bin/bash

解释:

--gpus all 就表示使用主机所有的显卡
--name=加你想起的镜像名字 
(-v表示一个挂载文件夹 主机和docker可以共享这个文件夹,主机的文件夹要自己创建,经过我多次试错,容器内的文件夹要对应的上你将来存文件的地方)
-v 冒号前写主机文件夹:冒号后写容器文件夹
-p 表示端口映射,不然容器里面和外面是隔绝的,无法在主机里面同步更新!
这一步在创建的时候不写,那么再修改就很麻烦!
-d 表示后台运行
-it 表示可以交互

看一下我的运行效果:

然后查看容器,确定其id及状态:

docker ps

3、进入容器

可以用docker attach+ 容器的id进入容器:

docker attach 30992b9cc43f
# 注意,这个方法进入容器后,再用exit退出容器后,容器会停止运行,
# 用其他方法则不会,详见菜鸟教程
# 如果退出后找不到自己的docker,使用docker ps -a可查看所有容器;

注意前面的名字了 有个@+容器id。

4、网络安装

进行基础的网络安装: ping config(依次运行下面的代码)

apt-get update
apt install net-tools        # ifconfig 
apt install iputils-ping     # ping

完成下载!

 现在进入我们自己的docker 看看各个文件夹,发现啥也没有!因为相当于我们自己的新电脑嘛。我们就要开始装anaconda3了 !

5、安装Anaconda

可以去conda官网找自己喜欢的安装包:https://repo.anaconda.com/archive/

我选的是https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh

正式安装anaconda前先安装wget:

apt-get install -y wget

然后输入命令:

wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh

此时看一下容器的目录:

已经安装好了,但是此时文件是灰色的。不仅没解压,还没有可执行权限!

安装解压程序:

apt-get install bzip2

找到自己的anacnoda安装包位置:(像我就是在这个文件目录里面直接下载的,就直接在这里运行就行了,刚刚看我的ls操作就能看到安装包了)

但是很显然,这个时候安装包是没有运行权限的,现在我们给它权限:

chmod +x Anaconda3-5.3.0-Linux-x86_64.sh

现在可以看到它变成绿色了,那么就可以运行使用了!

现在开始正式安装!

./Anaconda3-5.3.0-Linux-x86_64.sh

值得注意是,基本上是回车,一直yes ,不过vscode可装可不装,自己看着办(我选择不装,我不喜欢用)

(因为基本上一路yes,所以要留意一下这个安装位置)

然后输入conda -V 看看是不是显示。如果报错说不是该命令,那么,就是没有把anaconda3/bin的路径配置到环境变量里面去,那么接下来就是去配置环境变量!

这个时候让之前记的安装位置和配置文件地址就有用了

/root/.bashrc

可以看到再次报错,居然没有权限去改?其实不是的,师兄给我的是有root权限的,那么真相只有一个!那就是这个文件现在不可用,需要我们手动给权限:

我们先进root文件夹,再查看所有的文件情况:

cd /root
ls -al ~/

现在给权限:

chmod 766 ~/.bashrc

对比十分明显,那么接下来对环境变量进行配置:

结果依然报错,那么我们下载一个可以编辑这个玩意的插件:

apt-get install vim

之后输入y就行了。

这次这样运行代码:

vim /root/.bashrc

运行后出现这样的界面,就是这个文件内部了:

先按i,这样就可以编辑了(代表insert),将下面这句放到文件尾部:

export PATH=/root/anaconda3/bin:$PATH# 这个要依据具体你的文件位置来修改,我的这个由来是之前截图的地方强调过了

然后按esc,再按:wq并回车就可以了。

回到终端后还有最后一步:激活刚刚的配置文件

source ~/.bashrc

这下就没有问题了!

接下来可以删除anaconda的安装包,当然,空间足够大也可以不删。

rm -rf /home/Anaconda3-5.3.0-Linux-x86_64.sh

四、使用容器

上一步当然可以继续操作,如果有事先走,那就先退出,然后这样:

docker start id
docker attach id

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

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

相关文章

鸿蒙4.0开发笔记之ArkTS语法的基础数据类型[DevEco Studio开发](七)

文章目录 一、基本数据类型的定义1、变量声明2、数字类型3、字符串类型4、布尔类型5、数组类型6、元组类型7、枚举类型8、联合类型(少用)9、未知Unkown类型10、未定义和空值类型 二、数据类型的使用1、组件内部声明变量不需要使用let关键字2、使用Divide…

从戴森发明的“球轮手推车”看专利

今天跟大家分享一个特别有意思的专利,那就是戴森发明的球状轮子的手推车。 相信戴森这个品牌很多人都听过,大家熟悉的应该是戴森吹风机和戴森吸尘器。这两个目前是市场上比较高端的家用设备。 很多人也正是因为这些家用设备了解到戴森这个人&#xff0…

有权图的最短路径算法

目录 单源最短路径问题 Dijkstra算法 原理 ​ 获得最短路径长度的Dijkstra代码实现 时间复杂度 算法优化 优先队列优化后的代码实现 时间复杂度 可以具体获得最短路径的Dijkstra代码实现 Bellman-Ford算法 原理 代码实现 Floyed算法 原理 代码实现 单源最短路…

YouTube宣布要求披露AI生成的内容并添加标签

不知道大家在逛YouTube的时候有没有刷到过一些画面和人物看起来不太自然的视频。 没错,这些视频里面的画面和人物可能都是由AI生成的。 近日,YouTube 产品管理副总裁在官方博客文章上表示:生成式 AI 有潜力在 YouTube 上激发创造力&#xff…

IBNR详解及基于R的计算逻辑

一、什么是IBNR IBNR是英文“Incurred But Not Reported”的缩写,中文意思是“已发生未报案未决赔款准备金”。它通常用在保险和金融领域,描述的是非寿险保险事故已经发生,但尚未向保险公司提出索赔的赔案而提取的准备金。 二、IBNR的提取流…

11:kotlin 类和对象 -- 普通类

前面粗咯的讲了类,这篇详细介绍类及相关的概念 定义类使用关键字class class Person { /*...*/ }类声明由类名、类头(指定其类型参数、主构造函数等)和由{}包围的类体组成。类头和类体都是可选的;如果类没有体,可以省…

vue.draggable拖拽——岗位切换如何判断?

有一个业务场景:把一个单位的某个岗位的人,从某某市A岗位调离出来后,又拖拽回去,如果是回到某某市A岗位,则没有变化,若是换了岗位,则会把色块变成红色,表示岗位的变化。 方法一&…

Maven 介绍

文章目录 什么是 maven为什么要选择mavenmaven 仓库什么是maven中央仓库什么是maven本地仓库 idea如何创建出maven项目如何引入第三方库依赖配置国内源 下载 Maven Helper 插件查看各个项目之间的依赖关系 什么是 maven Maven是 Apache 下的一个纯 Java 开发的开源项目&#x…

DDD 系统间的七种关系梳理与实践

系统间的七种关系 本节将根据耦合度从高到低逐一探讨这些关系。耦合度高有时并不是坏事,它能够让团队内部的系统更加内聚,而不是无法整合的碎块。我们应该根据具体情况进行选择。 因为系统间关系往往也是组织架构的反映,此处每种关系除了描…

超卓航科聚国内外专家学者,共推冷喷涂技术的发展与应用

11月24日——26日,冷喷涂技术及其在增材制造中的应用专题会在襄阳召开,来自国内外200多名科技工作者齐聚一堂,共同交流冷喷涂技术的研究与应用。 本次专题研讨会由中国机械工程学会表面工程分会主办,湖北超卓航空科技股份有限公司…

【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件

文章目录 前言正文一、项目依赖二、封装表格实体和Sheet实体2.1 表格实体2.2 Sheet实体 三、核心实现3.1 核心实现之导出为输出流3.2 web导出3.3 导出为字节数组 四、调试4.1 构建调试用的实体类4.2 控制器调用4.3 测试结果 五、注册大数转换器,长度大于15时&#x…

webGL开发虚拟实验室

开发虚拟实验室是一个具有挑战性但也非常有趣和有价值的任务。通过 WebGL,你可以创建交互式、沉浸式的虚拟实验室,使用户能够进行实验和学习。以下是一些步骤和关键考虑因素,帮助你开始开发虚拟实验室,希望对大家有所帮助。北京木…

Unity 通过代码控制Texture进行缩放

在实际应用开发中&#xff0c;有时候需要通过代码对Texture进行缩放。 有两个方法&#xff0c;一个是通过控制宽高进行缩放&#xff0c;另一个是通过比例值进行等比例缩放。 1、控制宽高的方法&#xff1a; /// <summary>/// 纹理缩放方法一&#xff0c;指定宽高/// &…

游戏开发原画的设计方法

游戏原画设计是游戏开发中至关重要的一环&#xff0c;因为它直接影响到游戏的视觉吸引力和用户体验。以下是一些常见的游戏原画设计方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 理解游戏概念&…

如何在Python中操作Redis数据库

目录 一、安装redis-py库 二、连接Redis数据库 三、执行操作 1、设置和获取键值对 2、删除键值对 3、获取列表数据 四、处理数据 1、使用哈希表&#xff08;Hash&#xff09;处理关联数据 2、使用列表&#xff08;List&#xff09;处理有序数据 3、使用集合&#xff…

XIAO ESP32S3之AI应用

一、XIAO ESP32S3 AI应用示例 包含 ChatGPT语音助手、关键字识别等 英文:https://wiki.seeedstudio.com/xiao_esp32s3_speech2chatgpt/ 中文:SenseCraft 模型助手部署 | Seeed Studio Wiki 二、XIAO开发板TinyML项目展示 各种XIAO开发板基于Tiny ML的演示项目:XIAO 系列教…

链接共享平台LinkStack

什么是 LinkStack &#xff1f; LinkStack 是一个独特的平台&#xff0c;为在线管理和共享链接提供了高效的解决方案。平台提供了一个类似于 Linktree 的网站&#xff0c;它可以让用户克服社交媒体平台上只能添加一个链接的限制。借助 LinkStack&#xff0c;用户可以轻松链接到…

Jetson AGX XAVIER刷机时提示invalid_request - Authorization flow not allowed

我下的版本是sdkmanager_1.9.2-10899_amd64.deb&#xff0c;安装后后直接在terminal输入 sdkmanager&#xff0c;出来后提示登录有问题&#xff0c;跳到浏览器链接 http://localhost:8080/?error_descriptionAuthorizationflownotallowed&statehttp://localhost:41369&a…

shell_exec 和 exec区别

shell_exec 和 exec 都是用于在 PHP 中执行系统命令的函数&#xff0c;但它们之间有一些区别。 返回值类型&#xff1a;shell_exec 函数返回命令的输出结果作为字符串&#xff0c;而 exec 函数将输出结果存储在数组中。 输出结果&#xff1a;shell_exec 函数返回命令的完整输出…

录音模块:WT588FM01高性能录音语音芯片IC,功能丰富,音质卓越,满足多样化需求

在音频市场日益繁荣的今天&#xff0c;用户对于录音模块的需求也日益多样化。唯创知音针对这一市场趋势&#xff0c;推出了高性能录音语音芯片模块WT588FM01。凭借其远距离录音、优质音质以及多样化的功能&#xff0c;它成为了众多电子产品中的首选之一。 WT588FM01是深圳唯创…