Docker部署JupyterHub应用

2018 年 10 月 23 日 • 阅读数: 115

Docker部署JupyterHub应用

对于个人用户而言在远程服务器上配置一个jupyter notebook应用是很简单的,但我的目的是搭建一个多用户的线上jupyter notebook开放平台,并且对于服务器上的应用我都是推荐全面Docker化,尽量都使用Docker来部署,这篇文章的镜像我已经上传DockerHub感兴趣的可以直接下载使用

配置

官方为我们提供了一个基础的jupyterhub的Docker镜像,但是并不全面,不能直接应用,而且网上几乎没看到任何教程,官方文档也不是太全面

这里我也只是将官方的镜像上进行完善了一下而已

首先,下载官方镜像

docker pull jupyterhub/jupyterhub

运行官方镜像(Docker容器默认暴露的8000端口)

docker run -d -p 8000:8000 --name jupyterhub jupyterhub/jupyterhub jupyterhub

进入容器内部

docker exec -it jupyterhub bash

这时候它其实已经启动了jupyterhub了,但是我们并不能进行访问,还需要添加用户及配置文件,并且手动安装jupyter notebook(不明白为什么不自带)

创建配置文件

jupyterhub --generate-config

容器本身也没有安装vim,所以为了方便修改配置文件,我自己安装了vim

安装vim

apt-get update
apt-get install vim

安装jupyter notebook(这里用pip也行)

conda install notebook

创建用户(默认情况下jupyterhub使用的是unix上的用户验证,这里我也懒得去替换其他的验证了)

useradd admin -d /home/admin -m
echo admin:password|chpasswd

useradd amor -d /home/amor -m
echo admin:password|chpasswd

为了测试权限,我先添加了两个用户,一个admin配置管理员权限,一个amor普通权限

修改配置文件

vim jupyterhub_config.py

添加以下配置

c.JupyterHub.ip = '0.0.0.0'
c.JupyterHub.port = 8000
c.PAMAuthenticator.encoding = 'UTF-8'
c.LocalAuthenticator.create_system_users = True
c.Authenticator.whitelist = {'admin', 'amor'}
c.Authenticator.admin_users = {'admin'}

配置文件主要就是两个用户验证,whitelist:表示可以登录的用户,必须是系统中的用户,admin_users:表示管理员用户,默认这里面的用户会主动加入到whitelist中

重启容器

docker restart jupyterhub

重启服务后应该就可以通过浏览器访问了,并且也可以使用我们刚才配置的用户名和密码进行登录

部署

打包镜像

docker commit jupyterhub luoyangc/jupyterhub

上传DockerHub

docker push luoyangc/jupyterhub:latest

在服务器上下载我们自己的镜像

docker pull luoyangc/jupyterhub

启动服务(这里我绑定的端口是8888,注意需要将服务器的对应端口打开)

docker run -d -p 8888:8000 --name jupyterhub luoyangc/jupyterhub jupyterhub
标签: DockerJupyterHub

召唤伊斯特瓦尔