在本地Windows系统访问实验室服务器并基于Docker使用Jupyter Notebook
在进行一些科研任务、数据竞赛时,需要实验室服务器的支持,为了让对服务器操作不熟悉的童鞋尽快熟悉,本文介绍了在本地Windows系统访问实验室服务器并基于Docker使用Jupyter Notebook,避免新童鞋少走一些弯路。
1、本地连接实验室服务器
实验室服务器是基于Linux系统,因此需要各位童鞋对Linux系统有一定的了解,可以通过以下的学习资料进行Linux操作系统的学习:
现在假设各位已经对Linux有一定的了解,那么现在需要下载终端模拟器来链接服务器,主流的软件有Xshell、Xftp 6等,不过现在介绍一款十分好用的神器:MobaXterm,在接下来的操作中我将使用MobaXterm进行展示。
下载MobaXterm
下载好后进入界面,如下图所示
点击Session,点击SSH,输入实验室服务器ip,在name那里打钩,输入用户名(没有用户名的话让师兄给你创建一个),注意,只有连接校园网或者是使用打印机那边的网线才可以登录服务器。
当进入这个界面就表示已经登录上了服务器。
2、创建Docker Image和Container
由于实验室某些不可抗拒因素,无法在用户下面下载并安装conda,所以需要使用docker容器来满足我们的需求,如果还不知道docker是什么,请阅读下面的链接进行学习:
现在假设已经学会了如何使用docker,那么我们就开始操作吧。由于服务器上的docker是一直在运行的,所以不需要再次启动,输入
sudo usermod -aG docker $USER
将自己的用户加到Docker用户组。避免每次输入都需要加sudo,如果无法sudo获取权限,让师兄帮你加权限。
输入
docker image ls
查看目前docker下的镜像
输入
docker container ls
查看正在运行的容器
如果需要查看docker里面的所有容器,在ls后面加上-a
接下来选择自己需要的镜像,在https://hub.docker.com/上面将镜像拉下来,这里演示的是拉下anaconda的镜像
docker pull continuumio/anaconda3
(如果需要用到anaconda这个镜像的话就没必要再从网上拉相同的镜像,以免占用空间)
查看下拉好的镜像
这时候创建自己的container,输入
docker run --name yao -p 8888:8888 -it -v /home/tom/DISK/DISK1/yao/:/home/ continuumio/anaconda3 /bin/bash
-
其中–name yao:container名字为yao
-
-p:指定端口映射,格式为:主机(宿主)端口:容器端口,当然这个8888:8888我已经挂载上去了,其他人挂载的时候改一下地址以免冲突(很重要,最好要加上,目前暂时没有找到怎么补加的方法,如果有欢迎补充)
-
-v:挂载目录,冒号前的表示要挂载的宿主机的地址,必须写绝对地址,冒号后的为要放到容器内部的地址,建议挂载到/home/tom/DISK/DISK1/下
-
continuumio/anaconda3是image的名字,在你想要的image下创建这个container
-
/bin/bash为初始指令,创建好这个container后直接bash运行
如果需要用到gpu,请在创建时添加–runtime = nvidia,如下所示
docker run --runtime=nvidia --name yao -p 8888:8888 -it -v /home/tom/DISK/DISK1/yao/:/home/ airaria/pytorch0.4.1 /bin/bash
创建好后就进入了如下的界面
在这个docker你就是root用户,如果要退出docker则是用如下指令就可以回到主界面
exit
想要重新启动container的话先用
docker container ls
查看正在运行的container,找到自己的id,复制下来,输入
docker container exec -it 51e394786f55 /bin/bash
重新启动container,51e…是我的id
3、在Docker下使用Jupyter Notebook
直接输入jupyter notebook是不会弹出base下的jupyter notebook的,先对jupyter notebook进行配置。直接在终端下输入ipython(如果没有安装一个或者用python也行)
输入
from notebook.auth import passwd
passwd()
把这个密匙复制下来,一会有用。exit可以退出ipython
输入
jupyter notebook --generate-config
生成jupyter notebook的配置文件,然后修改配置文件,用vi和vim都可,建议使用vim,安装如下
apt-get update
apt-get install vim
安装好vim之后,运行一下程序打开配置文件:
vim ~/.jupyter/jupyter_notebook_config.py
复制下面的内容
c.NotebookApp.ip='*'
c.NotebookApp.password = u'你的密匙'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 # 这个ip改成你创建时候的那个ip
c.NotebookApp.allow_root = True # 这个可加可不加,不加就每次输入的时候加上--allow-root
配置好后,输入wq保存。
然后先创建自己的环境
conda create --name py38 python=3.8
py38是python3.8环境的名字,想创建什么样的python环境都可以改,创建好后,输入
source activate py38
激活环境
接下来再把自己的环境加到jupyter中,先输入
conda install ipykernel
安装ipykernel,然后将环境写入jupyter
python -m ipykernel install --user --name 环境名称 --display-name "Python (环境名称)"
然后直接在终端输入jupyter notebook
已经看到jupyter notebook在运行了,在本地浏览器(最好是chrome)下面输入http://实验室ip:xxxx,这个xxxx是你映射时候的ip,我设置的时候为8888,所以输入是8888
本地jupyter notebook正常运行了,选择切换kernel就可以切换到你想要的版本!搞了2天遇到了各种坑,记录一下2333,希望对大家有帮助,如果有什么错误或者是什么补充欢迎提出,更方便以后的新童鞋阅读。
参考文献:https://blog.csdn.net/weixin_40008349/article/details/81135847
https://www.jianshu.com/p/889885e75de8