利用Docker环境配置jupyter notebook服务器
Eswai: http://blog.csdn.net/eswai
我们有一台高性能工作站,配置好了TensorFlow所需环境的容器。现在我希望局域网的其他计算机都能使用这个环境,但是SSH远程登录还是不够便捷。因此想到可以配置jupyter notebook服务器,其他计算机可以用浏览器来登录。
1 配置docker镜像
假设此步骤已经搞定
2 开启容器
> NV_GPU=0 nvidia-docker run -it --name notebook-server -p 7777:8888 -v /home/eswai:/eswai eswai/tf140py2:1.0 /bin/bash
其中,
- NV_GPU=0 nvidia-docker
- NV_GPU=0 选择第0个GPU设备
- 用nvidia-docker才能启用GPU
- 如果不用GPU,直接用docker命令就行
- -it
- -i 以交互模式运行容器,通常与 -t 同时使用
- -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
- –name 后面跟容器的名称,notebook-server
是我自定义的名字,可以随便改;
- -p 端口映射,如xxxx:yyyy将主机的xxxx端口映射到容器内的yyyy端口,jupyter notebook默认使用8888端口,7777是我自定义的,不冲突就好;
- -v 路径映射 /a : /b将主机的/a路径映射到容器的/b,根据自己的需要手动修改
- eswai/tf140py2:1.0是我使用的镜像名称和版本号,根据具体需要修改
- /bin/bash 启动镜像后执行的命令
3 配置jupyter notebook
3.0 此时已经进入容器内终端,如果容器已关,请先start再attach
3.1 创建存放jupyter notebook的文件夹
> cd [映射目标]
> cd /eswai
> mkdir [存放notebook的文件夹]
> mkdir jupyter
此时相当于在主机的/home/eswai下创建了jupyter文件夹
3.2 如果容器内没有jupyter notebook,需要安装一下
> pip install jupyter notebook
3.3 配置jupyter notebook
> jupyter notebook --generate-config
> vim ~/.jupyter/jupyter-notebook-config.py
修改如下内容
# 允许root启动
c.NotebookApp.allow_root = True
# 允许远程访问
c.NotebookApp.ip = '*'
# 设置notebook文件夹
c.NotebookApp.notebook_dir = '/eswai/jupyter'
# 设置静态token,这样就不用每次换token了,另一种方法是设置密码password
c.NotebookApp.token = '[自定义token]'
3.4 开启notebook
在主机终端下
> docker exec notebook-server jupyter notebook &
或在容器内终端下
> jupyter notebook &
按Ctrl+P+Q退出容器但不关闭
4 测试使用
打开链接: http://[主机IP]:[配置映射的主机端口]/tree?token=[自定义的token]
形如:http://172.16.1.1:7777/tree?token=9Llv9cCqyNv1Vf7g