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.mfbz.cn/a/198574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCode Vue 开发环境配置

Vue是前端开发中的重要工具与框架,可以保住开发者高效构建用户界面。 Vue2官方文档:https://v2.cn.vuejs.org/ Vue3官方文档:https://cn.vuejs.org/ Vue的安装和引用 Vue2的官方安装指南:https://v2.cn.vuejs.org/v2/guide/ins…

github新建项目

参考链接:Github上建立新项目超详细方法过程 在这里新建一个repositories 接下来就选择相关的信息: 然后create a new就行了 接下来需要创建文件:(同时通过upload上传文件) 每次最多上传100个文件,然后保…

WEB渗透—反序列化(八)

Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩哔_…

11.27二叉查找树,遍历二叉树,层序(判断是不是完全二叉树),根据遍历序列重构二叉树,递归输入建树(树的定义,结构体细节,typedef)

如果left<right&#xff0c;就表明其之间还有元素&#xff0c;即左右指针重合&#xff0c;区间只有一个元素也被包含其中&#xff1b; left<right,就表明递归过程中&#xff0c;只允许区间有两个及以上的元素&#xff0c;不允许区间只有一个元素&#xff0c;那么对应地&…

【前端】浅谈async/await异步传染性

文章目录 概述观点无法解决可以解决 来源 概述 "异步传染性"问题通常是指&#xff0c;当一个函数使用了async和await&#xff0c;其调用者也需要使用async和await处理异步操作&#xff0c;导致整个调用链都变成异步的。这种情况可能导致代码变得更复杂&#xff0c;不…

基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(三)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这一节主要是对每个流程节点的字段规则设置与操作规则设置&#xff0c;目前也是只针对自定义业务表单。 1、…

基于SSM的社区团购系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

python基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中&#xff0c;我们已经以钢铁产业产品缺陷检测数据场景为基准&#xff0c;陆续开发构建了多款目标检测模型&#xff0c;感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否&#xff1f;基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

智能优化算法应用:基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工蜂群算法4.实验参数设定5.算法结果6.参考…

中伟视界:AI智能分析盒子的人数统计AI算法通过什么算法模型可以解决重复统计的问题?

在AI盒子的人数统计中&#xff0c;常常会遇到重复统计的问题。当有多人同时出入视野范围时&#xff0c;传统的算法模型很难准确识别和计算人数&#xff0c;容易导致重复统计。为解决这一难题&#xff0c;AI算法模型可以采用多种方法来提高准确性并避免重复统计。 一种常用的解决…

【沐风老师】3DMAX拼图建模工具MaxPuzzle2D插件使用方法详解

MaxPuzzle2D拼图建模工具使用帮助 MaxPuzzle2D拼图建模工具&#xff0c;拼图建模“彩虹系列”插件&#xff0c;是一款用MAXScript脚本语言开发的3dMax拼图建模小工具&#xff0c;可以创建2D或3D的拼图图形阵列。这让需要拼图建模的设计师大大节省了时间。 MaxPuzzle2D工具界面&…

移动应用开发介绍及iOS方向学习路线(HUT移动组版)

移动应用开发介绍及iOS方向学习路线&#xff08;HUT移动组版&#xff09; 前言 ​ 作为一个HUT移动组待了一坤年&#xff08;两年半&#xff09;多的老人&#xff0c;在这里为还在考虑进哪个组的萌新们以及将来进组的新朋友提供一份关于移动应用开发介绍以及学习路线的白话文…

中间件安全:JBoss 反序列化命令执行漏洞.(CVE-2017-12149)

中间件安全&#xff1a;JBoss 反序列化命令执行漏洞.&#xff08;CVE-2017-12149&#xff09; JBoss 反序列化漏洞&#xff0c;该漏洞位于 JBoss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中&#xff0c;其 doFilter 方法在没有进行任何安全检查和限制的情况下尝试…

神奇植物在哪里?文心大模型助力一秒读懂花草的“前世今生”

本期文心开发者说邀请到飞桨开发者技术专家谢杰航老师&#xff0c;分享如何利用AI技术构建风景园林行业的植物知识科普系统&#xff0c;接着还介绍了大模型应用的基本技术流程框架&#xff0c;多模态特征提取以及使用向量数据库的优势&#xff0c;使用飞桨星河社区运行向量数据…

SAP VL01N Error VL 367

在VL01N 创建交货单的时候&#xff0c;报错&#xff1a;An item with no delivery quantity is not permitted. Item will be deleted. 第一种情况&#xff1a; 1.首先MMBEcheck 可用库存&#xff0c;非限制使用库存是否充足 注意&#xff1a;这里框出来的交货库存也是非限制…

Python超级详细的变量命名规则

Python 需要使用标识符给变量命名&#xff0c;其实标识符就是用于给程序中变量、类、方法命名的符号&#xff08;简单来说&#xff0c;标识符就是合法的名字&#xff09;。 Python 语言的标识符必须以字母、下画线&#xff08;_&#xff09;开头&#xff0c;后面可以跟任意数目…

GitLab 登录中,LDAP和 Standard 验证有什么区别

在 GitLab 中&#xff0c;LDAP&#xff08;Lightweight Directory Access Protocol&#xff09;和 Standard 验证是两种不同的身份验证方法&#xff0c;它们有以下区别&#xff1a; LDAP&#xff08;Lightweight Directory Access Protocol&#xff09;身份验证&#xff1a; L…

Kafka事务机制:原理和实践

Kafka事务机制&#xff1a;原理和实践 Apache Kafka 是一个分布式流处理平台&#xff0c;广泛用于构建实时数据管道和流应用程序。它不仅以高吞吐量、可扩展性和容错能力著称&#xff0c;还提供了事务支持&#xff0c;以确保数据的完整性和一致性。在这篇博客中&#xff0c;我…

Android flutter项目 启动优化实战(一)使用benchmark分析项目

背景描述 启动时间是用户对应用的第一印象&#xff0c;较慢的加载会对用户的留存和互动造成负面影响 在刚上线的B端项目中&#xff1a; 1.提高启动速度能提高整体流程的效率 2.提高首次运行速度能提高应用推广的初体验效果 问题描述 项目刚上线没多久、目前存在冷启动过程存在…

C#:程序发布的大小控制

.net不讨喜有个大原因就是.net平台本身太大了&#xff0c;不同版本没有兼容性&#xff0c;程序依赖哪个版本用户就要安装哪个版本&#xff0c;除非你恰好用的是操作系统默认安装的版本——问题是不同版本操作系统默认安装的不一样。 所以打包程序就很头疼&#xff0c;不打包平台…
最新文章