Linux:通过Docker搭建深度学习环境
背景
前不久朋友转发了个链接给我,一看,是马爸爸在疫情期间送温暖。 全日制高校学生都可以领一台2核4G的ECS。先领半年,快到期的时候又可以续半年。
真的香啊!之前买的学生机一年120大洋才1核2G!
正好最近深度学习的课实验很多,自己的笔记本又要干别的事儿,就领一台准备拿来跑数据。
顺手记录下用Docker配置环境的方法,免得以后忘了。
配置:
传送门:疫情期间领取ECS
Docker安装
首先确保自己拿到了ECS(这不是废话么2333),然后随便SSH软件连上去,putty/Xshell之类的。
然后开始Docker的安装。对于Docker不熟悉的同学可以先去了解一下,非常好用的一个工具。
首先稳一手,升级下yum:
yum -y update
Docker软件包已经包括在默认的 CentOS-Extras 软件源里。所以接下来直接:
yum install docker
安装完毕。王者荣耀 Docker,启动!
$ systemctl start docker
设置一下开机启动:
$ systemctl enable docker
Docker安装完毕。
Deepo
Docker Hub上搜了下比较全的深度学习框架的Image。看到了 ufoym/deepo
这个Image。
Deepo is a series of docker images that
- allows you to quickly set up your deep learning research environment
- supports almost all commonly used deep learning frameworks
- supports GPU acceleration(CUDA and cuDNN included), also works in CPU-only mode
- works on Linux CPU version, Windows and OS X
and their Dockerfile generator that
- allows you to customize your own environment with Lego-like modules
- automatically resolves the dependencies for you
很方便,所以就决定是他了。
因为是ECS嘛,没有显卡,就不上CUDA了,直接CPU Mode。
安装
下载Image。
docker pull ufoym/deepo:cpu
使用
启动容器运行。两种方式:
一、如果不要带Jupyter,直接跑python文件就这样:
docker run -it --ipc=host -v /Data/py_workspace:/data ufoym/deepo:cpu bash
其中 -v /Data/py_workspace:/data
的意思为:将硬盘上的 /Data/py_workspace
映射到容器内的 /data
目录下。可以根据自己的文件位置自行更改。
比如我这样设置,那么在容器内进入 /data
目录,便可访问到我硬盘内 /Data/py_workspace
文件夹下的内容,如图。
二、也可以带Jupyter运行。
docker run -i -p 8888:8888 --ipc=host -v /Data/py_workspace:/data ufoym/deepo:cpu jupyter notebook --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token=7c4a8d09ca3762af61e59520943dc26494f8941b --notebook-dir='/data'
其中 NotebookApp.token=
后面跟的一串是密码,是 sha1
加密的。可以随便找个sha1在线加密网站生成一下。-p 8888:8888
意思是将外部8888端口映射到容器8888端口。
运行之后直接浏览器访问下ECS的8888端口。
让我们登录。输入密码,注意是sha1加密后的串。
成功。
执行一下试试。
是不是很方便。不用听风扇呼呼呼地吵了。
运维
不带jupyter的时候按 Ctrl + P + Q
可以让容器在后台运行。
如果要重新进入容器,首先查看容器id:
docker ps
然后进入容器:
docker exec -it 容器id /bin/bash
带Jupyter的话,后台运行我是直接nohup命令的,因为个人不是很喜欢用Jupyter,没有怎么研究:
nohup docker run -i -p 8888:8888 --ipc=host -v /Data/py_workspace:/data ufoym/deepo:cpu jupyter notebook --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token=7c4a8d09ca3762af61e59520943dc26494f8941b --notebook-dir='/data' >/Data/py_jupyter.out &
好了,有需要的同学可以试试!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。