Docker:Linux下搭建深度学习环境

满眼星辰

Linux:通过Docker搭建深度学习环境

背景

 前不久朋友转发了个链接给我,一看,是马爸爸在疫情期间送温暖。 全日制高校学生都可以领一台2核4G的ECS。先领半年,快到期的时候又可以续半年。
 真的香啊!之前买的学生机一年120大洋才1核2G!
 正好最近深度学习的课实验很多,自己的笔记本又要干别的事儿,就领一台准备拿来跑数据。
 顺手记录下用Docker配置环境的方法,免得以后忘了。

配置:
image.png

传送门:疫情期间领取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 文件夹下的内容,如图。

image.png

 二、也可以带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端口。

image.png

让我们登录。输入密码,注意是sha1加密后的串。

image.png

成功。

执行一下试试。

image.png

是不是很方便。不用听风扇呼呼呼地吵了。

运维

 不带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 &

好了,有需要的同学可以试试!

阅读 3k

计算机硕士研究生。

67 声望
5 粉丝
0 条评论

计算机硕士研究生。

67 声望
5 粉丝
文章目录
宣传栏