文档章节

把jupyter-notebook装进docker里

JungleKing
 JungleKing
发布于 2018/06/27 00:34
字数 1166
阅读 396
收藏 2

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

Docker及系统

已经安装好的同学可以忽略这一节。我喜欢用ubuntu,所以host 系统是ubuntu,docker容器中的系统也是ubuntu。ubuntu apt-get源默认按装的docker版本不是最新版本的,需要通过添加源的方式来安装最新版本的docker。参考链接

#添加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.04

docker pull ubuntu:14.04

启动容器

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

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,也可以提前考虑,在这里多映射几个外部端口。

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用的是清华的源。

使用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编译时报的一堆错误,整体安装过程比较顺畅。

本文转载自:https://segmentfault.com/a/1190000007448177

JungleKing
粉丝 4
博文 103
码字总数 9821
作品 0
天津
程序员
私信 提问
不会装cuda配环境的小学生怎么躺撸caffe

本文首发于个人博客 不会装cuda配环境的小学生怎么躺撸caffe 收录于简书专题深度学习·计算机视觉与机器学习 DL如今已经快成为全民玄学了,感觉离民科入侵不远了。唯一的门槛可能是环境不好配...

在河之简
2017/06/26
0
0
Jupyter Notebook Python, Scala, R, Spark, Mesos

在Docker中运行Jupyter/Spark/Mesos服务。 来源[英]:https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook Spark on Docker,基于Jupyter Notebook Python, Scala,......

openthings
2016/06/12
1K
0
linux下配置Docker的jupyter notebook环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjssharpsword/article/details/90044534 jupyter notebook环境配置备忘: 1、安装:pip install jupyter 2、...

fjssharpsword
05/09
0
0
基于Docker+Jupyter+Python的科学计算环境

原文地址:https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook Jupyter Notebook Scientific Python Stack 基于Docker+Jupyter+Python的科学计算环境,提供快速部署的一站......

openthings
2016/09/18
630
0
数据科学家Docker入门指南

Docker容器是通过虚拟化开发和部署应用程序的一种越来越流行的方式,它对数据科学家有用吗?当然,本指南就会向你介绍它的作用,并手把手教你快速入门。 介绍 Docker是一种越来越流行的,使在...

【方向】
2018/09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
25分钟前
6
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
37分钟前
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
43分钟前
4
0
composer爆错:zlib_decode():data error

解决办法:先用 composer diagnose 命令检测 然后 composer self-update 更新composer版本 最后执行 composer update 或者 composer install composer 切换阿里云镜像 用起来还快 composer c...

koothon
49分钟前
4
0
shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部