jupyter-notebook是我很喜歡的工具,搭環境稍顯麻煩,其實jupyter web形式的使用方式,最好的部署方式是在雲上,一次部署到哪裏均可以使用,豈不快哉。如今各家雲服務器還挺貴的,docker出來後,我就琢磨把jupyter-notebook放到容器中。python
已經安裝好的同窗能夠忽略這一節。我喜歡用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
這個過程基本和在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_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了。大數據
若是要大數據分析,還須要安裝不少大數據相關的包。
我用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編譯時報的一堆錯誤,總體安裝過程比較順暢。