1. 前言
《Jupyter notebook》一文中学习了jupyter的使用,本文学习一下怎样使用docker安装jupyter,并且配置访问密码。
前置条件是安装配置好了docker环境,安装方法参考《Docker入门》。已知docker宿主机IP为192.168.56.130。
2. 安装jupyter
1、登录dockerhub查看需要的Jupyter - Docker Official Images。
2、下载jupyter镜像(以5.7.8为例)
1 | docker pull jupyter/base-notebook:notebook-5.7.8 |
注意一:不要使用6.x.x,存在页面无法显示扩展插件的bug,详情参考Jupyter nbextensions_configurator not shown。
注意二:本文使用的是老版本的 jupyter 镜像,最新版本的 jupyter 镜像,已经从 dockerhub 迁移到了 quoy.io
3、创建配置目录
1 | mkdir -p /opt/jupyter/jovyan |
4、启动jupyter服务
1 | docker run --name vk-jupyter -d \ |
以上命令:
- 命名容器为vk-jupyter,后台运行
- 映射宿主机8888端口到容器的8888端口
- 挂载宿主机目录/opt/jupyter/jovyan到容器目录/home/jovyan
更多启动命令参数可以参考Jupyter Docker Stacks。
5、验证安装
1 | docker ps |
jupyter启动正常的话就可以看到vk-jupyter容器。
6、查看token
1 | docker exec -it vk-jupyter jupyter notebook list |
可以查看到登录需要的token
7、登录jupyter
浏览器访问 http://192.168.56.130:8888 ,可以看到Jupyter登录页面,使用token登录进入jupyter操作页面。
3. 配置jupyter
1、设置密码
1 | docker exec -it vk-jupyter jupyter notebook password |
2、使用密码
浏览器访问 http://192.168.56.130:8888
此时使用自己设置的密码就可以访问jupyter了。
3、根目录
jupyter编辑器的默认根目录为 /home/jovyan ,对应宿主机目录 /opt/jupyter/jovyan ,创建的目录和文件都去这个路径下面去找。
4、安装ipywidgets 如果不安装ipywidgets,页面加载 /nbextensions/widgets/notebook/js/extension.js 文件时会报错404。
1 | docker exec -it vk-jupyter pip install ipywidgets |
4. 配置Nginx
jupyter 使用了 websocket 协议,所以需要配置支持 websocket。
如果不配置的话,通过域名访问时会报错无法连接内核,也就无法运行python脚本。
1 | server { |
5. jupyter小技巧
5.1. 执行bash
在代码框里输入叹号+bash命令,即可执行bash,例如:
1 | !ls -l |
5.2. 登录进容器
1 | docker exec -it vk-jupyter /bin/bash |
5.3. 安装常用命令
1 | docker exec --user root -it vk-jupyter /bin/bash |
5.4. 安装插件
Jupyter Notebook 扩展插件(nbextensions)是一些 JavaScript 模块,我们可以使用插件强化 Notebook 的功能。扩展插件本质上修改了 Jupyter UI,以实现更强大的功能。
1、界面添加 Nbextensions
1 | docker exec -it vk-jupyter conda install -c conda-forge jupyter_nbextensions_configurator |
2、安装常用扩展集合
1 | docker exec -it vk-jupyter pip install jupyter_contrib_nbextensions -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ |
5.5. 启动jupyter时用户授权sudo
1 | docker run --name vk-jupyter -d \ |
这个版本的jupyter镜像,不支持直接以root用户启动jupyter程序。因此退而求其次,给jovyan用户授权sudo。
如果非要以root用户启动jupyter程序,可以自行修改启动脚本 /usr/local/bin/start.sh
,然后重新打镜像。
参考文档:Running jupyterlab as root instead of jovyan when running in rootless docker mode