一、镜像拉取
Docker hub官网查找自己想要的docker image
例如,本文使用miniconda3的lastest版本:
使用命令拉取镜像:
$ docker pull continuumio/miniconda3
二、启用容器
$ docker run -id
-p XXXX-XXXX:XXXX-XXXX
-p XXXX:xxxx
--gpus all
--name XXXX
--restart always
-v /home/XXXX:/data
--user root continuumio/miniconda3:latest
其中-p为端口映射,a:b,a为宿主机端口,b为容器内部端口。
其中宿主机的一个端口只能映射到容器内部的某一个端口上
比如:8080->80之后,就不能8080->81。
但是容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8081->80,8082->80
查看端口映射命令:
$ docker port CONTAINER_ID
三、容器内安装jupyter notebook
# 更新apt-get
$ apt-get update
# 安装python dev包
$ apt-get install python-dev
# 安装jupyter
$ pip install jupyter
四、配置jupyter notebook
配置包括可以外部访问、设置密码、端口号、防火墙关闭。
首项,jupyter notebook默认端口为8888,并且不允许docker外部访问,想要开启必须配置jupyter_notebook_config.py文件。
# 首先初始化jupyter_notebook_config.py
$ jupyter notebook --generate-config
# 使用ipython生成密钥
$ ipython
[1]:from notebook.auth import passwd
[2]:passwd()
Enter password: XXXX
Verify password: XXXX
Out[2]: '生成的一串密钥'
# 注意保存生成的密钥
# 编辑jupyter_notebook_config.py
$ vim /root/.jupyter/jupyter_notebook_config.py
# 设置c.NotebookApp.password,注意前面加 u
c.NotebookApp.password=u'生成的一串密钥'
# 设置外部访问
''' 连通性设置
c.NotebookApp.allow_remote_access = True
''' ip设置
c.NotebookApp.ip='*'
''' 禁止自动打开浏览器
c.NotebookApp.open_browser = False
''' 端口设置
c.NotebookApp.port = XXXX
# 启动jupyter notebook
$ jupyter notebook
放行linux防火墙:
# 放行你所设置的端口防火墙
# 注意映射问题
$ sudo firewall-cmd --zone=public --add-port=XXXX/tcp --permanent
# 重启防火墙
$ sudo systemctl restart firewalld
即可正常从网页端访问jupyter notebook,第一次需要输入密钥,以后会记住密钥。
五、个性化设置
安装jupyter notebook的插件。
# 安装插件前记住停止jupyter notebook
# pip安装插件
$ pip install jupyter_contrib_nbextensions
# 配置 nbextension
$ jupyter contrib nbextension install --user --skip-running-check
# 重启jupyter notebook
$ jupyter notebook
选取插件控制器:
推荐以下插件:
- Table of Contents (2):根据markdown的标题栏自动生成目录,有个按钮,可以自动添加数字编号;
- Code prettify:对代码进行格式化;
- Collapsible Headings:可以根据headings折叠区域;
- Codefolding:可以对代码块进行折叠;
- ScrollDown:当代码输出内容过长,自动下拉滚动条;
- 其他功能自行查找示例!
下面配置工作目录,首次打开会是根目录‘/’下的工作环境,不太方便,按个人需求配置。
# 编辑/root/.jupyter/jupyter_notebook_config.py
$ vim /root/.jupyter/jupyter_notebook_config.py
# 修改路径
c.NotebookApp.notebook_dir = 'XXX'
# 重新启动jupyter notebook
$ jupyter notebook
最后效果如下:
大功告成!