目录

观前须知

步骤

(1)安装docker

(2)从Docker Hub获取镜像源并搭建Ubuntu18.04-CUDA10.1-GPU环境

(3)使用VsCode的SSH连接开发环境

(4)配置.ipynb文件运行环境(plus)

(5)最终成果

补充

(1)docker安装问题

(2)为啥不直接用VSCode自带的docker插件

灵感来源(水)

最后放弃虚拟机,docker启动!!!

2024.5.28此地无银三百两


观前须知

1、你想要实现一台电脑拥有多个cuda环境来适配不同的深度学习框架吗?(eg.10.2,11.6)

2、放心吧,虚拟机不能装GPU驱动放弃开多个镜像环境的想法吧哈哈哈(除非你喜欢玩"双系统"切来切去的)

3、试了试docker,卧槽,神!恨自己相识尚晚(^v^)

接下来我将介绍如何在Windows10家庭版系统中搭建docker4.24.0(容器Ubuntu18.04+GPU cuda10.1+Anaconda深度学习框架),并配置VSCode的SSH连接容器后实现运行.ipynb文件

(虽然是原创,但更多的是缝缝补补总结网上各种方法,以及踩过的坑,只是为了方便自己及大家进行环境搭建,少走弯路嘞~)

名词解释:

宿主机:运行docker的操作系统,如Win10

Docker容器独立于外界的运行环境,环境存在于内存中,文件写在磁盘上,如Ubuntu容器(类似领域展开)

步骤

(1)安装docker

docker官网:Docker: Accelerated Container Application Development(最新版)

docker安装文档Docker Desktop release notes | Docker Docs(过去版本的docker,不建议安装太新的,容易因为WSL出问题)

我Win10用的是docker 4.24.0,之前用4.30.0的反而容易出BUG
百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/14GwokeWLC3wduOFxIucAdQ?pwd=kxp1 提取码:kxp1(永久有效)

如果你安装出现docker engine stop问题,可以先看看这篇文章下面的一些docker安装问题

(当然可能有概率解决不了哈哈哈哈哈哈哈,祝好运~)

打开docker,在设置更改一下docker镜像源配置,方便后续下载镜像更快捷(2024.5.26测试下面三个镜像还有效

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://ccr.ccs.tencentyun.com"
  ]
}

(2)从Docker Hub获取镜像源并搭建Ubuntu18.04-CUDA10.1-GPU环境

Docker Hub网址:https://hub.docker.com/(科学上网访问网站)

在里面能找到一些前辈搞出来的镜像安装包(即已经配好了环境,开箱即用,非常方便)

比如说我们拿接下来某位大哥搞好的镜像来装我们环境

在cmd或者PowerShell,输入下方命令来拉取镜像,非常方便(拉取镜像不用科学上网,因为之前配置过镜像源

(写这篇博客时那个镜像还在,如果用不了就得自行访问网站找环境了QAQ)

docker pull 2550863g/cuda10.1-cudnn7-ubuntu18.04-anaconda3-base

一般我们在nvidia-cuda官方的难以找到合适的版本,现在版本都太高了,都找不到过去的版本了

目前cuda只有11.0~12.4版本,都已经是cudnn8了

然后使用下方命令来创建并启动你的docker环境

docker run -it --gpus=all --shm-size="32g" -v /home/zjz/workspace -w /workspace --name ubuntu2 -p 8088:99 2550863g/cuda10.1-cudnn7-ubuntu18.04-anaconda3-base /bin/bash

参数说明:

-it:表示交互式运行容器;

--gpus=all:使用宿主机的GPU(关键参数!!!)

–shm-size:设置的是共享内存大小,根据需要设置,如果不设置的话,默认64M,训练深度学习模型的时候dataloader会报错提示共享内存不足

-v:是地址映射到容器文件夹(这里zjz是本人名字简称哈,设啥都可以的...(尴尬))

-w:设置工作目录

--name:设置环境名称

-p:设置端口映射(宿主机端口:容器端口),这里8088是宿主机端口,可以用cmd:netstat -an查看一下别被占用了,docker容器对外端口是99

/bin/bash:虚拟环境的启动目录

之后也可以用下面方法启动进入容器

先在docker的containers中启动

然后输入,也能到达Ubuntu的控制台啦!

docker exec -it ubuntu2 /bin/bash

验证:

在这里,环境已经包括了cuda,cudnn,Anaconda三个框架,并且使用宿主机的GPU,可以用以下代码验证:

查看系统中存在GPU(这里显示的是系统可以适配的cuda最高版本

nvidia-smi

验证cuda编译器版本,可以看到确实是10.1,真棒!

nvcc -V

参考文章:【Docker】基于docker构建深度学习开发环境_docker搭建德语学习-CSDN博客

Windows安装Docker并创建Ubuntu环境及运行神经网络模型_windows docker ubuntu gui-CSDN博客

(3)使用VsCode的SSH连接开发环境

如果嫌SSH连接麻烦的小可爱也可以点击这里跳转到VSCode的Docker插件连接

还记得之前映射的-p 8088:99是吧?对的,这个8088就是我们VsCode需要访问的端口地址,而99是ubuntu系统端口地址!

完全可以参照这篇文章配置,这里就不赘述了:【vscode 连接远程服务器 中的docker】_vscode 连接docker一直在用scp拷贝远程包-CSDN博客

当然每次docker启动虚拟环境都要重新启动SSH服务

/etc/init.d/ssh restart
​
* Restarting OpenBSD Secure Shell server sshd

宿主机连接的端口一般为

ssh root@localhost -p 8088  #localhost用默认的127.0.0.1替代也可以

Tips:

如果嫌每次启动SSH麻烦,可以参考这篇文章设置SSH服务自启动

docker自启动ssh_docker ssh自启动-CSDN博客

如果嫌每次SSH连接登录都要输密码,可以参考这篇文章配置

SSH配置公钥私钥免密登录——windows to linux_ssh 怎么设置私钥-CSDN博客

最后我本人的Remote Explore插件中ssh部分配置如下(可以用IdentityFile参数配置私钥位置),这样就能实现免密登录啦!

(4)配置.ipynb文件运行环境(plus)

参考本人写的另一篇博客,相信你可以哒!

告别Jupyter Notebook,我能用VSCode跑.ipynb文件啦!_vscode ipynb-CSDN博客

(5)最终成果

可以在本地电脑上的VSCode连接Docker的Ubuntu虚拟环境并进行mxnet-GPU训练啦!



补充

(1)docker安装问题

如果出现docker engine stop问题,那么有可能

1.检查是否启动Hype-V(一般人其实都有启动的...)

windows家庭版没有Hyper-v的解决办法(全网最细)_没有 hyper-v-CSDN博客

2.看看能否关闭"使用WSL2替代Hype-V功能"

解决docker engine stoped的问题_windows docker engine stopped-CSDN博客

3.有些时候WSL2实在关不了,那么也就只能尝试降版本啦!

(自从我的docker从4.30降低到4.24之后,确实跑通了,官网现在好像还有4.9的能用,看运气啦)

(2)为啥不直接用VSCode自带的docker插件

在VSCode的插件里面有docker插件,几乎有手就能玩

但使用该插件有以下两点问题:

  • 最直接的问题是不能拖拽上传文件到容器
  • 其次是因为这个在VSCode打开terminal后你会发现跳转到的还是你宿主机的cmd,还需要输入exec命令来启动容器控制台,多了一次麻烦

灵感来源(水)

2024年了有人还在考古“李沐学AI”课程,课程中要安装mxnet-GPU版本,然后我上网查了一下,

这个mxnet已经是两年前就废止的项目啦!

mxnet官网:Get Started | Apache MXNet

它最高的GPU版本只能到cuda 11.2

但我电脑已经装了cuda 11.6版本,如果重装的话意味着我其他的深度学习框架Paddle,Pytorch等含GPU的深度学习框架也要重装

人麻了...

首先放弃学校服务器P100,跟自己电脑3060运算效率差不多,但是主观上觉得性能与效率不如自己电脑

其次放弃云服务器,不是富哥玩不起呜呜呜...

想尝试VMware虚拟机搞,但很可惜它不认我的显卡驱动,目前网上也没有很好的解决方法

之前也听老师说想用Linux搞深度学习得用双系统,可惜哥一身反骨。哼!偏不装双系统,就觉得每次启动都要太麻烦辣,而且容易死机寄寄!

在搜相关解决方法的时候发现几个神评论

从舍友那也听说师兄叫他搞docker,他连Anaconda都没安就直接跑图像处理了???

wc,直接网上现学docker,什么容器,虚拟环境,开箱即用。说得我都心动啦~

机缘巧合之下,催生了这篇文章

最后放弃虚拟机,docker启动!!!


2024.5.28此地无银三百两

大家千万别这样搜索CSDN!!!请假装docker是解决问题的最佳手段

不然就会...啊啊啊啊啊啊啊啊

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐