Docker部署IPython
2015-06-08 16:17
686 查看
本文的部署环境是Ubuntu 14.04
Docker
Docker 详细概念可以去search,简单来说就是把应用打包到一个容器里的轻量级系统虚拟化服务
IPython Notebook
IPython Notebook 既是一个交互计算平台,又是一个记录计算过程的「笔记本」。它由服务端和客户端两部分组成,其中服务端负责代码的解释与计算,而客户端负责与用户进行交互。 服务端可以运行在本机也可以运行在远程服务器,包含负责运算的 IPython kernel (与 QT Console 的 kernel 相同) 以及一个 HTTP/S 服务器 (Tornado)。 而客户端则是一个指向服务端地址的浏览器页面,负责接受用户的输入并负责渲染输出。
本文主要记录使用Docker 在服务器部署IPython Note 应用的过程。比传统的部署方案果然简单轻松不少。
知识点
Docker 的基本概念部署IPython 容器
使用Nginx 容器反向代理IPython
Docker 的基本概念
下文的操作主要涉及Docker的一下几个知识点:Docker 的镜像(image)、容器(container)、仓库(registerie)
Docker 的安装
Docker 的基础用法
Docker的端口映射
Docker 数据卷
链接容器
详细的信息可以自行搜索
部署IPython
下载IPython 的镜像
官方Docker镜像地址,里面包含5个镜像:notebook
ipython
scipyserver
scipystack
nbvierer
简单说一下这几个镜像的区别
ipython是以上几个镜像的共同的根镜像。
notebook提供了一个web的前端。
scipystack在
ipython的基础上安装了许多科学计算的包(cython,h5py,matplotlib,numpy,pandas,patsy,scikit-learn,scipy,seaborn,sympy,yt),而
scipyserver则在
scipystack的基础上提供了web的前端。
nbviewer则是nbviewer.ipython.org的实现
更多详细信息请到GitHub上的docker-notebook 查看
选择
scipystack镜像最省事,但是需要下载的东西也越多。下文选择的也是
scipystack
$ sudo docker pull ipython/scipyserver
运行IPython 容器
sudo docker run -d --name IPythonApp -p 8888:8888 -e "PASSWORD=your password" -e "USE_HTTP=1" -v /home/zhiyue/repos/ipython-notebook:/notebooks ipython/scipyserver
解析一下参数
-d是以后台的方式运行,
--name是容器的别名,
-p是端口映射,
-e是设置环境变量,这里的环境变量
PASSWORD设置成你自己的密码就可以了,
USE_HTTP=1意思是使用http,
-v是设置数据卷,把宿主机的目录挂载到容器里,即使容器被删除,数据也可以保留下来
Nginx 反向代理 IPython
有两种方式,一种是使用官方的Nginx,另一种是使用jwilder / nginx-proxy,后一种方法更加简单和方便方式1:nginx
使用Nginx的官方镜像nginxNginx 配置文件
ipython-server.conf
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server{ listen 80; server_name note.everforget.com; location / { proxy_pass http://ipython:8888; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
这里面要注意一点是,ipython要使用websock因此要配置websocket,之前在这个问题查了好久。
proxy_pass http://ipython:8888;[/code]ipython和后面容器连接时的别名有关。
运行Nginx容器$ sudo docker run -d -p 80:80 --name nginx --link IPythonApp:ipython -v `pwd`/config:/etc/nginx/conf.d -v `pwd`/logs:/var/log/nginx nginx方式2:nginx-proxy
jwilder / nginx-proxy
运行nginx-proxy 容器docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
运行ipython 容器sudo docker run -d -e "VIRTUAL_HOST=ipython.everforget.com" --name IPython -p 8888:8888 -e "PASSWORD=xxxxxx" -e "USE_HTTP=1" -v /home/zhiyue/repos/ipython-notebook:/notebooks ipython/scipyserver
最后放一张图:
这样就可以随时通过web来使用python了。参考
Docker 笔记 By 枯木
[Docker] 快速建立 IPython Notebook 環境
在Docker下部署Nginx
IPython Notebook: 交互计算新时代
更新日志:
2015-6-8 添加配图
2015-6-6 第一次撰写
相关文章推荐
- 灵活控制Docker容器中启动的进程
- 构建自己的私人docker registry
- 如何在 Windows 操作系统中运行 Docker 客户端
- 20个令人惊叹的桌面Docker容器
- CoreOS环境下通过register镜像搭建私有仓库
- Docker是什么
- 在阿里云CentOS 6.5 安装、运行Docker容器的方法与步骤
- Docker学习笔记-Docker入门
- docker rmi all
- 学习docker
- docker 自制镜像
- 在Debian 8上安装Docker
- Docker 上安装Kali
- 在Debian 8安装Docker
- 如何在一个Docker容器里安装Discourse
- docker --命令
- Connecting Docker for Cloud Services using SDN and Network Virtualization
- 使用nsenter进入docker容器
- docker registry的CI规划
- Docker系列学习之一——何为Docker?