在开始深度学习之前,需先做好一件小事,那就是配置环境,配环境的烦恼配过的都知道,话不多说,直奔主题……
在阅读本文之前需要了解:docker是什么?docker的常用命令有哪些?(当然,不了解也没有关系,按照本文所述步骤一步步来就可以不明觉厉的配好环境了hiahiahia)
ufoym/deepo是一个几乎包含所有主流深度学习框架环境的docker镜像:theano, tensorflow, sonnet, pytorch, keras, lasagne, mxnet, cntk, chainer, caffe, torch。借助该镜像,可以快速配置环境,
配置环境七步走,如下:
STEP 1:获取镜像ufoym/deepo,详情请自行百度"ufoym/deepo",然后食用。(可根据自身情况选择GPU或者CPU版本)
STEP 2:运行镜像,创建容器
sudo nvidia-docker run -it --name=容器名 -v 宿主机目录:/容器内目录 -p 自定义端口号(此处假定为23333):22 ufoym/deepo bash
运行该命令后就进入了docker中。(创建容器的命令也是在不断变化的,具体需要看官方文档,如果nvidia-docker run不能用的话,可以试试sudo docker run --gpus all -it )
其中,-v是实现目录挂载,关于目录挂载,可参考https://www.cnblogs.com/ivictor/p/4834864.html
-p是端口映射,映射成功后可以直接通过映射后的端口访问docker。
举例:假设服务器IP地址为**.**.*.***,端口映射为 -p 23333:22 -p 23334:6006 -p 23335:8888,其中8888是jupyter的默认端口,6006是tensorboard的默认端口。则可
至此,已经可以使用docker开始工作了……后面的操作是为了提高使用体验。
接下来,步骤3,4,5是为了打开docker的TCP 22端口,以便通过docker的端口号直接ssh访问docker。3,4,5,6步均在docker中进行操作。如果不打开22端口,是没有办法通过映射的端口号直接登录docker的。
STEP 3:在docker内安装openssh-server。
apt-get install openssh-server
如果安装失败,运行apt-get update与apt-get upgrade,然后再次尝试安装。
STEP 4:修改配置文件
如果不把PermitRootLogin prohibit-password注释掉,会禁止root用密码登录
首先用vim /etc/ssh/sshd_config打开文件,
然后将PermitRootLogin prohibit-password用#注释掉 ,新增一行PermitRootLogin 改为yes
# 参考 https://www.cnblogs.com/miaodi/p/6718950.html
STEP 5:开启SSH服务,这样就可以通过映射后的端口直接访问docker。
service ssh restart
(或者/etc/init.d/ssh start
或者service ssh start),这三个命令总有一个管用
STEP 6:设置root密码,输入passwd root然后回车,依照提示输入密码即可。
STEP 7:退出容器
如果用exit退出容器的话,那么在退出之后会关闭容器。TCP服务也不能用了,自然就不能直接访问docker
所以,采用快捷键Ctrl+P+Q退出容器而不关闭容器,下一次就可以直接通过映射后的端口访问docker。
好了,至此大功告成,欢迎批评指正。
完成以上配置之后,便可以像这样使用docker...
# 前提:在docker中开启ssh服务,即service ssh restart;docker处于开启状态,即可以通过docker ps查看到你的docker
#进入docker
ssh -p [自己设置的端口号] root@[ip地址]
#使用jupyter
在docker中开启jupyter服务,然后在本地电脑浏览器上进入网址**.**.*.***:8888