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.hqwc.cn/news/227669.html

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

相关文章

【运维】hive 高可用详解: Hive MetaStore HA、hive server HA原理详解;hive高可用实现

文章目录 一. hive高可用原理说明1. Hive MetaStore HA2. hive server HA 二. hive高可用实现1. 配置2. beeline链接测试3. zookeeper相关操作 一. hive高可用原理说明 1. Hive MetaStore HA Hive元数据存储在MetaStore中,包括表的定义、分区、表的属性等信息。 hi…

ArrayList 和 HashMap 源码解析

1、ArrayList 1.1、ArrayList 构造方法 无参创建一个 ArrayList 数组默认为空数组 transient Object[] elementData; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {}; private int size; // 数组容量大小public ArrayList() {this.elementData DEFA…

JAVA基础进阶(九)

一、日志技术 程序中的日志可以用来记录程序运行过程中的信息,并可以进行永久存储。一旦业务出现问题,可以通过日志信息去定位。 二、日志技术的优势 可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。…

选择排序以及改进方案

选择排序以及改进方案 介绍: 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中选择最小(或最大)的元素,然后将其放在已排序序列的末尾。选择排序的过程就像是每次从待排序的元素中选择最小的一个&…

2024年天津艺术职业学院专升本报名工作的通知

天津艺术职业学院关于2024年天津市高职升本科考试报名工作的通知 请天津艺术职业学院各位2024届大专应届毕业生(含高职扩招2024年应届毕业生)查阅以下通知。 一、网上报名 (一)时间及网址:请于2023年12月4日9:00至6日…

【Vue】绝了!这生命周期流程真...

hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如果对您有用,可以点赞收藏哈~ 生命周期 Vue.js 组件生命周期: 生命周期函数(钩子)就是给我们提供了一些特定的…

Net6.0或Net7.0项目升级到Net8.0 并 消除.Net8中SqlSugar的警告

本文基于NetCore3.1或Net6.0项目升级到Net7.0,参考连接:NetCore3.1或Net6.0项目升级到Net7.0-CSDN博客 所有项目按照此步骤操作一遍,完成后再将所有引用的包(即 *.dll)更新升级到最新版(注意:有…

Spark---资源、任务调度

一、Spark资源调度源码 1、Spark资源调度源码过程 Spark资源调度源码是在Driver启动之后注册Application完成后开始的。Spark资源调度主要就是Spark集群如何给当前提交的Spark application在Worker资源节点上划分资源。Spark资源调度源码在Master.scala类中的schedule()中进行…

leetCode 17.电话号码的字母组合 + 回溯算法 + 图解 + 笔记

17. 电话号码的字母组合 - 力扣(LeetCode) 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1&…

类指针压缩空间

一、类指针压缩介绍 压缩指针,指的是在 64 位的机器上,使用 32 位的指针来访问数据(堆中的对象或 Metaspace 中的元数据)的一种方式。 对象头中的 Class Pointer 默认占 8 个字节,开启 -XX:UseCompressedOops 后&…

文本生成超逼真歌曲,谷歌推出音乐模型Lyria

转换示例 谷歌旗下的DeepMind与视频平台YT合作,发布了目前最先进的音乐模型——Lyria。 为了突破传统音乐模型的生硬机器感,谷歌汇集了多个部门并与Charlie Puth、T-Pain、Troye Sivan等9位知名音乐人共同研发了Lyria。 Lyria可生成爵士、重金属、摇滚…

每日一题:LeetCode-202.面试题 08.06. 汉诺塔问题

每日一题系列(day 07) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…