Linux服务器下用docker进行深度学习环境的配置以及简单使用

       一直都听说docker是一个很不错的工具,不需要复杂的环境配置,以及移植性很强。这次在给服务器配置完了深度学习环境后,也尝试了一下使用docker,因为之前没接触过docker,就稍微借鉴了几篇博客来梳理一下安装和使用的流程。

1.docker的安装

docker的安装主要是参考了博客教你如何用Docker快速搭建深度学习环境,直接参考这个博客来安装,基本上不会有什么错误发生,需要注意的就是要根据自己系统的来添加相应的镜像源。

2.接着就是安装Nvidia-docker

这一部分在上面的博客中也写的很清楚

3.拉取镜像

   docker pull ufoym/deepo:all-py36-jupyter    

                                                    

这个是真的费时间,拉取的速度很慢,所以就学习了一下docker的基本操作

3.1 用户加入到docker组中

如果不把用户加入docker组中的话,运行docker相关操作就需要加sudo,还是比较麻烦的,所以直接加入一了百了

先查看是否存在docker组:cat /etc/group | grep docker  输出:docker:x:999  则证明含有docker组

把当前用户添加到docker组: sudo gpasswd -a ${USER} docker

切换到docker组: newgrp - docker

重启docker服务: sudo service docker restart

可以不加sudo就执行docker操作了。

3.2 image文件以及拉取image文件来生产container

image可以看做是container的类,而container是image的一个实例,所以一个image可以产生多个container

查看image文件:docker image ls

删除image文件:docker image rm  imageID  其中的imageID可以通过查看image文件中的输出来找到

拉取一个入门的image文件,hello world: docker image pull hello-world

运行这个image文件来产生一个container:docker container run hello-world

运行成功的话,输出为:Hello fromDocker! 证明你的docker可以正常试用了。但是这个container输出后会自动关闭。

接下来展示一个不会自动关闭的container,运行一个Ubuntu的image:docker container run -it ubuntu bash

因为这个container是不会自动终止的,所以需要自己去终止它,先查看正在运行的container以及ID

docker container ls  还有一个查看方法是列出所有的container,包括终止的:docker container ls --all

接着使用:docker container stop containerID 来终止在运行的container,其中的stop也可以换成kill

但是终止container只是让其停止运行了,而文件之类的都在,如果要删除这个container使用:docker container rm containerID

再使用docker container ls --all 进行查看之后就不会再看到以及被删除的container了。

3.3 docker的其他有用命令

重复使用之前使用run生成的container,但把它终止了:docker container start containerID

进入正在运行的docker中:docker container exec -it containerID /bin/bash 

把容器中的文件拷贝到本地的当前目录下:docker container cp [containerID]:[/path/to/file]

把本地文件上传到container中:docker container cp 本地路径 containerID:容器路径

 

4. 启动拉取的深度学习image

       

目前我只拉取了4个image,Ubuntu和hello-world都玩了,就剩下ufory/deepo和nvidia/cuda了。

刚开始的是使用的指令:docker run -it ufoym/deepo:all-py36-jupyter 来建立ufoym/deepo的一个container,发现虽然可以建立,但是不能够正常使用其中的Nvidia驱动等环境。所以就把这个container删了。

接着使用的指令:nvidia-docker run -it ufoym/deepo:all-py36-jupyter 来配合nvidia环境来建立container,可以完美的使用其中的环境,而且发现跑mnist的一个epoch只需要5s,比直接在服务器上跑还要快一些,觉得很神奇。

                                                   

而直接在服务器中配置好的本地环境上跑需要的时间稍微长一些,而且在前面几个epoch甚至需要10s,但docker中不会有这猴子那个现象

                                                     

还有一个对比就是使用pycharm在我的windows环境下远程在服务器上调试和跑程序需要的事件更加长,基本保持10s

                                                             

真是不同的配置环境和运行环境下需要的训练时间完全不一样,不过还是觉得在pycharm上在本地进行代码的修改和调试在开发效率上会更加的高。关于pycharm如何配置好远程调试代码的步骤将会在我的下篇博客中介绍。

这就是使用docker来配置深度学习环境和使用深度学习环境,配置起来的确比自己手把手的配置要省时省力多了。

 

 

 

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值