把jupyter-notebook装进docker里

jupyter-notebook是我很喜欢的工具,搭环境稍显麻烦,其实jupyter web形式的使用方式,最好的部署方式是在云上,一次部署到哪里均可以使用,岂不快哉。如今各家云服务器还挺贵的,docker出来后,我就琢磨把jupyter-notebook放到容器中。python

Docker及系统

已经安装好的同窗能够忽略这一节。我喜欢用ubuntu,因此host 系统是ubuntu,docker容器中的系统也是ubuntu。ubuntu apt-get源默认按装的docker版本不是最新版本的,须要经过添加源的方式来安装最新版本的docker。参考连接web

#添加ubuntu apt 的https访问能力
$ sudo apt-get install apt-transport-https

#将Docker官方资料库的访问Key添加到你本地系统
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

#将docker 资料库地址添加到apt源列表
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"

#安装
$ sudo apt-get update
$ sudo apt-get install lxc-docker

Docker安装好之后就要拉一个ubuntu版本镜像,我拉的是ubuntu:14.04docker

docker pull ubuntu:14.04

启动容器

容器是存放jupyter-notebook的地方,咱们要作的是基于精简版的ubuntu镜像启动一个容器,而后在里面安装sshd这种远程登陆的工具。
先让容器以交互式虚拟终端的方式启动,若是须要使用和host不一样的DNS server配置,可使用--dns参数指定DNS server,不然新启动的docker 容器会复制host的/etc/resolv.conf。ubuntu

docker run -i -t ubuntu:14.04 /bin/bash

安装sshd的过程比较简单,我一般安装openssh-server浏览器

sudo apt-get install openssh-server

而后编辑它的配置文件 /etc/ssh/sshd_config,注释掉配置文件中的"PermitRootLogin without-password",再增长一句"PermitRootLogin yes"使得root用户能够远程登陆。而后用将这个安装好sshd的容器作成镜像。
以后基于新镜像启动容器,用端口映射的方式,映射ssh端口到host,以后经过ssh指定端口的方式登陆到docker 容器。jupyter-notebook的默认端口号是8888,也能够提早考虑,在这里多映射几个外部端口。bash

docker run -d -p 30001:22 --name jupyter-notebook ubuntu:14.04-sshd /usr/sbin/sshd -D

安装jupyter

这个过程基本和在ubuntu系统上安装jupyter的过程是同样的,但容器中的ubuntu是个最简环境,没有安装python-dev包。服务器

#更新apt-get环境
apt-get update

#安装python dev包
apt-get install python-dev

#安装jupyter
pip install jupyter

安装过程须要注意的是,因为墙的缘由,ubuntu的源和pip的源都换成国内的源,我ubuntu用的是网易的源,pip用的是清华的源。ssh

使用jupyter

jupyter 默认只能经过本地地址访问,要放开配置,容许jupyter远程访问。在放开远程访问时,须要设置密码,jupyter的配置文件只支持加密后的密文密码(赞一个)工具

#生成jupyter配置文件,这个会生成配置文件.jupyter/jupyter_notebook_config.py
jupyter notebook --generate-config

#使用ipython生成密码
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: 
Verify password: 
Out[2]: 'sha1:38a5ecdf288b:c82dace8d3c7a212ec0bd49bbb99c9af3bae076e'

#去配置文件.jupyter/jupyter_notebook_config.py中修改如下参数
c.NotebookApp.ip='*'                          #绑定全部地址
c.NotebookApp.password = u'刚才生成的密码'
c.NotebookApp.open_browser = False            #启动后是否在浏览器中自动打开
c.NotebookApp.port =8888                      #指定一个访问端口,默认8888,注意和映射的docker端口对应

配置完成之后,就能够用 jupyter notebook命令把jupyter启动起来了,而后你就能够看到一个超级简洁的jupyter登陆界面了。输入密码就能够开始使用jupyter了。大数据

clipboard.png

扩展

若是要大数据分析,还须要安装不少大数据相关的包。
我用jupyter最多的仍是使用pandas/scikit-learn,因此我会继续安装这两个包,你们能够根据本身须要继续安装本身想要的python包。

#安装numpy,安装过程当中会有c文件的编译,可能会报些错,但不影响最终结果
pip install numpy

#安装scipy,安装过程当中会有c文件的编译,可能会报些错,但不影响最终结果
pip install scipy

#安装matplotlib
pip install matplotlib

#安装pandas
pip install pandas
pip install scikit-learn

整体来讲pip的包管理仍是比较好的,除了numpy、scipy编译时报的一堆错误,总体安装过程比较顺畅。

相关文章
相关标签/搜索