# 启动容器时绑定主机和docker的接口,jupyter服务的默认端口是8888
NV_GPU=0 nvidia-docker run -tid -v /home/code_directory jupyter:/home/code_directory -p 8877:8888 --name jupyter_serverce centos:7.5 /bin/bash
# 登录容器
docker exec -it jupyter_serverce /bin/bash --login
# 安装 jupyter
pip install jupyter notebook
# 配置jupyter notebook
jupyter notebook --generate-config
# 修改配置文件,新版本没有这个,可以不用写
vim ~/.jupyter/jupyter_notebook_config.py
# 第83行,允许远程访问
c.NotebookApp.allow_remote_access = True
# 第85行,允许root启动
c.NotebookApp.allow_root = True
# 第205行,监听任意的访问IP地址
c.NotebookApp.ip = '*'
# 第263行,加载默认的notebook文件夹,即容器启动时挂载的主机代码目录
c.NotebookApp.notebook_dir = '/home/code_directory'
# 第354行,设置默认token
c.NotebookApp.token = '1357'
#浏览器默认不启动
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #可自行指定一个端口, 访问时使用该端口
# 启动notebook
# 容器内启动
jupyter notebook &
# 主机内启动
docker exec jupyter_serverce jupyter notebook &
# Windows浏览器打开容器中的代码目录
# http://[主机IP]:[绑定容器的端口]/tree?token=[配置文件中所设置的c.NotebookApp.token值]
http://10.37.2.190:8877/tree?token=1357
下面是转载于https://blog.csdn.net/weixin_40008349/article/details/81135847?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param 没有整理。
目前刚接触了linux服务器以及docker,需要在上面跑些python的程序。但是服务器没有可视化的工具,黑框框调试起来非常麻烦,而python工具库里的jupyter notebook是一款强大的实时调试工具,就想在服务器上使用jupyter notebook。由于我是使用的docker,而网上的许多服务器上使用jupyter notebook的教程都没有在docker里进行的,因此在找资料的绕了不少弯路,现在将总结的方法贴出来,希望能方便更多的朋友。
1、使用docker命令建立container
使用docker命令建立container时,可以使用-p指令为container指定映射端口:
docker run -p 7777:8888 [other options]
docker run 是产生容器的命令,而-p 7777:8888的意思是服务器本身的7777端口会映射到container里面的8888端口,前面的7777可以更改为别的数字,只要别和服务器自身已经使用的端口产生冲突就好,后边的8888最好别更改,因为8888是jupyter notebook的默认端口,若是这里改动了8888,就要相对应更改。
2、在container里安装jupyter notebook
刚生成的container里一般是没有jupyter notebook的,需要我们去下载。使用的服务器端操作系统是Ubuntu 16.04LTS,可以使用下面的步骤来下载:
下载jupyter notebook
pip install jupyter notebook
3、配置远程访问jupyter
3.1、生成密码
在ubuntu的命令行里输入ipython打开ipython,(没有的话,输入python也可以)
ipython
在python命令行里分别输入:
from notebook.auth import passwd
passwd()
输完之后,设定一个密码,会生成一个sha1的秘钥会有如下的结果:
这时候把sha1秘钥保存下来,然后退出ipython命令行:
quit()
3.2、生成jupyter notebook的配置文件
jupyter notebook --generate-config
这时候会生成配置文件,在 ~/.jupyter/jupyter_notebook_config.py
3.3、修改配置文件
修改要用到vim,若是没有,先运行:
apt-get update
apt-get install vim
安装好vim之后,运行一下程序打开配置文件:
vim ~/.jupyter/jupyter_notebook_config.py
加入如下内容,其中sha1那一串秘钥是上面生成的那一串
c.NotebookApp.ip=’*’
c.NotebookApp.password = u’sha1:41e4da01dde4:e820dc9c0398eda2dc9323c9e4a51ea1228166a2’
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888
8888表明要使用container的8888端口访问jupyter,然后保存退出。
3.4、打开jupyter notebook
jupyter notebook --allow-root
虽然在这里看到,要求我们输入127.0.0.1:8888来连接jupyter,但是输入以上网址后发现找不到网页。
这是因为docker产生的container是一个新的环境,而我们连接的是服务器的端口,在第一步时我们把服务器的7777端口和container的8888端口绑定在一起了,所以我们需要连接的是服务器的7777端口。
所以在本地浏览器输入
127.0.0.1:7777
输入密码就可以连接到服务器端的jupyter notebook了。