看了好多docker搭建深度学习环境的都说的不是太详细,通过自己的实践终于搞明白了。docker安装什么的,百度有大量文章,本文就不讲了,这里是讲讲docker的使用。
1、拉取镜像
从https://hub.docker.com/上面拉取需要的镜像,这里以pytorch为例,其中Tags对该镜像有说明,根据需要拉取所需的镜像,我拉取了pytorch/pytorch这个镜像,见下图
docker pull pytorch/pytorch
2、 根据镜像创建容器
创建容器有两种方式:
一、如果不要带Jupyter,直接跑python文件就这样:
yi@SCEALE-GPU001:~$ docker run -it --ipc=host -v /home/fli/czd:/data pytorch/pytorch bash
其中 -v /home/fli/czd:/data
的意思为:将硬盘上的 /home/fli/czd
映射到容器内的 /data
目录下。可以根据自己的文件位置自行更改。
比如我这样设置,那么在容器内进入 /data
目录,便可访问到我硬盘内 /home/fli/czd
文件夹下的内容,如图。
二、也可以带Jupyter运行。
docker run -i -p 8888:8888 --ipc=host -v /home/fli/czd:/data pytorch/pytorch 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端口。
运行之后直接浏览器访问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 &