基于docker的ubuntu云服务器jupyter深度学习环境配置指南

news2024/11/24 18:45:57

step1

安装docker

文档中的命令如下:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

如果回显如下所示,则说明成功:
在这里插入图片描述

step2

安装Nvidia-docker
根据官方文档中的命令跑就行了

如果出现了以下回显,说明安装成功
在这里插入图片描述

exception 1

需要注意的是,在运行最后一步命令时:
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
如果报错如下:

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: requirement error: unsatisfied condition: cuda>=11.6, please update your driver to a newer version, or use an earlier cuda container: unknown.

说明cuda版本和Nvidia-docker版本不对应,此时需要找到和自己的cuda对应的Nvidia-docker。

查看cuda版本

通过命令nvidia-smi可以看到自己的cuda版本:
在这里插入图片描述
在上图的右上角可以看出我的cuda版本为11.2

找对应的cuda镜像

在docker官网中nvidia目录下找到自己的cuda对应的镜像即可。

命令中,11.6.2-base-ubuntu20.04是镜像名,11.6.2是应该对应的cuda版本

在这里插入图片描述
找到对应版本的镜像后,将sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi中的11.6.2-base-ubuntu20.04替换为对应版本的镜像名,比如11.2.2-base-ubuntu20.04

step3

安装jupyter深度学习镜像

sudo docker pull ufoym/deepo:all-jupyter-py36-cu100

安装好了后可使用docker images查看:

在这里插入图片描述

step4

启动docker

sudo docker run -it \
						-p 8080:8888 \
						--ipc=host \
						-v /home/ubuntu/jupyter:/jupyterRoot \
						--gpus all \
						--shm-size 16G \
						--name jupyter_notebook  \
						cf60a305ba7b

其中,容器中的/jupyterRoot文件夹被映射到本机的/home/ubuntu/jupyter文件夹中

运行结束该命令后,应该已经进入容器了

启动jupyter notebook

  • 生成密钥
# 初始化jupyter_notebook_config.py
$ jupyter notebook --generate-config
 
# 生成密钥
$ ipython
[1]:from notebook.auth import passwd
[2]:passwd()
Enter password: XXXX  # 这里输入登录密码
Verify password: XXXX
Out[2]: '生成的一串密钥'
# 密钥的格式应该是sha1:xxxxxx:xxxxxxx,注意保存生成的密钥  

exit #退出生成密钥
  • 写jupyter配置文件
# 编辑jupyter_notebook_config.py
# 如果你不知道jupyter_notebook_config.py,可以使用find命令找一下
$ vim /root/.jupyter/jupyter_notebook_config.py
 
# 设置c.NotebookApp.password,注意前面加 u,把密钥(sha1:xxxx:xxxx)全部复制过来
c.NotebookApp.password=u'生成的一串密钥'
 
## 设置外部访问
# 连通性设置
c.NotebookApp.allow_remote_access = True

# ip设置
c.NotebookApp.ip='0.0.0.0'  # 自动获取服务器ip

# 打开root权限启动
c.NotebookApp.allow_root =True

# 禁止自动打开浏览器
c.NotebookApp.open_browser = False

# 端口设置
c.NotebookApp.port = 8888  # 创建docker时候配置的容器内部服务的端口号
  • 启动jupyter notebook
# 使用后台模式启动jupyter notebook
nohup jupyter notebook --allow-root&

然后退出容器,访问本机ip:8080即可

docker中jupyter notebook的python环境配置

思路:将anaconda安装脚本放到映射文件夹中,在jupyter中运行安装脚本,然后就可使用conda配置python环境。

需要注意的是,安装好conda后,需要使用exec bash才能切换到conda的环境中
在这里插入图片描述

Reference

  • https://zhuanlan.zhihu.com/p/612188740
  • https://zhuanlan.zhihu.com/p/442176668
  • https://blog.csdn.net/Coder_Boy_/article/details/131152693
  • https://blog.csdn.net/wcj623917753/article/details/121296724

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

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

相关文章

驱动 控制开发版3盏灯、蜂鸣器、风扇、马达

head.h #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; //查看开发扩展板原理图可知 //蜂鸣器 PB6 //风扇 PE9 //马达 PF6 //LED1 PE…

商用车线控底盘需求文档

一、 概述 商用车线控底盘主要用于接收智能驾驶域控制器(控制器ADU)的请求指令,完成ADU 对驱动、制动、档位转向、驻车声光等部分的指令控制,从而实现智能驾驶功。 即 ADU 可通过 CAN 通讯的方式以特定周期和指令控制 一台车的线控…

驱动开发作业2 —— ioctl

通过ioctl函数选择不同硬件的控制,如实现对LED、蜂鸣器、马达、风扇的控制 1.将GPIO的相关寄存器封装成结构体 --------> gpio.h 2.LED相关驱动文件 --------> led.c 3.蜂鸣器相关驱动文件 --------> beep.c 4.风扇相关驱动文件 --------> fan.c 5.马…

Ubuntu/Debian等Linux系统安装微信客户端

【写在前面】 由于本人的工作环境基本是在ubuntu下,而ubuntu使用网页版微信常常会出现无法登陆的现象,为了能够在linux系统用上微信,于是在网上找了找办法,没想到还真有大神做了,特此分享出来。 【安装步骤】 其实只…

UNIX网络编程卷一 学习笔记 第二十二章 高级UDP套接字编程

TCP是一个字节流协议,又使用滑动窗口,因此没有记录边界或发送者数据发送能力超过接收者接受能力之类的事情,但对于UDP,每个输入操作对应一个UDP数据报(一个记录),因此当收取的数据报大于引用的输…

软件测试--Fiddler的使用(持续更新)

1.工具界面介绍 2.抓取请求 打开Fiddler,随便访问一些网址,左边便会抓取到很多请求 3.删除请求(Remove all或者输入命令) 4.过滤请求 ps: 5.打开抓HTTPS设置 6.界面熟悉 7.抓包图标说明

MPC vs Multi-sig——误解及重点关注

1. 引言 资金托管的2大主流方案为: MPC:MPC钱包——对应EOA账号。用于高信任企业场景。Multi-sig:多签钱包——对应智能合约钱包。用于个人场景,可强化安全性并易于恢复。 不过V神认为,基于MPC的EOA账号存在根本性缺…

不变的誓言 字符串常量

## 不变的誓言 字符串常量字符串常量,这节课的主题、 水帘洞一直都没有变1.什么是字符串呢? 就是一个一个字符连起来就是字符串,qq聊天 都是字符串。 字符串常量,“”1.什么是字符串呢? 就是一个一个字符连起来就是字…

sqlserver收缩数据库

1.收缩数据库 首先收缩的前提是需要有可用空间如下图,没有可用空间无法收缩数据库 2.减小数据库大小 通过链接: 查询数据库中各表的大小 如果查询的比较大而且无用的数据可以直接把表结构给拿出来,然后删除该表空间就直接释放出来了 3.收缩文件 我…

SpringBoot项目打包部署后页面无法访问问题定位处理记录

问题描述 项目在idea中可以正常访问,但是达成jar包后访问时候访问异常,并报错,部分异常栈如下: org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/views/login], template might not exist or might not be a…

插入排序(直接插入排序 折半插入排序)

直接插入排序 void InsertSort(ElemType A[],int n) {int i,j;for(i2;i<n;i)if(A[i]<A[i-1]){A[0]A[i];for(ji-1;A[0]<A[j];--j)A[j1]A[j];A[j1]A[0];} }折半插入排序 void BinInsertSort(int A[],int n) {int i,j,low,high,mid;for(i2;i<n;i){A[0]A[i];low1;high…

【MySQL】基本查询之表的增删改查

【MySQL】表的增删改查 一、插入操作----insert1.1 简单插入1.2 插入时是否更新----ON DUPLICATE KEY UPDATE1.3 插入时替换----REPLACE 二、查询----select2.1 简单查询与去重2.2 基本查询----where条件2.2.3 案列演示 2.4 排序----order by 三、修改操作----update四、删除--…

产品经理有效管理项目进度的5个关键方法

作为产品经理&#xff0c;管理项目进度是确保产品开发成功的关键组成部分。产品经理负责推动产品开发过程&#xff0c;并确保团队在最后期限前完成并保持在正轨上。以下是产品经理有效管理项目进度的一些关键方法。 1、创建详细的项目进度表 这个时间表应该包括开发过程的所有任…

java业务开发经典常见错误例子

java业务开发经典常见错误例子 文章目录 java业务开发经典常见错误例子1.ThreadLocal线程重用导致用户信息错乱的 Bug2.使用了线程安全的并发工具&#xff0c;并不代表解决了所有线程安全问题3.没有认清并发工具的使用场景&#xff0c;导致性能问题4.加锁前要清楚锁和被保护的对…

DM8:达梦数据库数据文件与日志文件介绍

DM8:达梦数据库数据文件与日志文件介绍 环境介绍1 表空间中的数据文件1.1 表空间1.2 数据文件1.3 系统自带的表空间1.3.1 SYSTEM 表空间1.3.2 ROLL 表空间1.3.3 TEMP 表空间1.3.4 MAIN 表空间1.3.5 用户自定义表空间1.3.6 DM数据库的表空间和数据文件分布 2 日志文件2.1 重做日…

Redis 数据库的概念、常用命令

Redis数据库 一、关系数据库与非关系型数据库概述1、关系型数据库2、非关系型数据库3、关系数据库与非关系型数据库区别&#xff08;1&#xff09;数据存储方式不同&#xff08;2&#xff09;扩展方式不同&#xff08;3&#xff09;对事务性的支持不同 4、非关系型数据库产生背…

【数据结构课程设计系列】完全二叉树操作演示

完全二叉数操作演示 1.完全二叉树操作演示要求&#xff1a; &#xff08;1&#xff09;创建完全二叉树(用顺序方式存储) &#xff08;2&#xff09;求二叉树的深度和叶子结点数 &#xff08;3&#xff09;实现二叉树的前序、中序、后序和层次遍历。 &#xff08;4&#xff09;…

基于ubuntu的驱动开发

一般的linux驱动开发都是基于交叉编译来进行的&#xff0c;本文尝试着从另一个角度&#xff1a;基于ubuntu的本地驱动开发来学习一下驱动的开发 一、驱动的开发与编译 1.1、编写驱动文件 #include <linux/init.h> #include <linux/module.h> static int hello_i…

FL Studio中文版21最新免费音乐编曲软件制作工具

FL Studio较为适合专业的音乐制作者&#xff0c;操作难度较大&#xff0c;学习门槛也较高&#xff1b;Studio One则主打一站式的音乐制作&#xff0c;从编曲到录音到后期的专辑制作都可以在其中实现&#xff0c;同时操作难度不大&#xff0c;对初学者和业余爱好者都较为友好。 …

【NX】NX二次开发中自动选择当前实体和方向

在NX的二次开发中&#xff0c;我们经常需要选择实体和方向&#xff0c;如果每次手动选择&#xff0c;势必会影响调试的效率&#xff0c;那么有没有办法&#xff0c;让程序一启动就自动选择当前实体和方向呢&#xff0c;自然是有的。 经过我一番研究&#xff0c;因为可能有多个实…