为JupyterHub自定义Notebook Images

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

JupyterHub已经成为数据探索的最佳工具,而且可以在Kubernetes中运行,提供托管的、可伸缩的数据分析环境。JupyterHub可以为每个用户创建独立的运行环境,在单机环境下运行在不同的Anaconda环境(不能扩展),在Kubernetes中,是运行在Docker容器之中的,而且可以扩展到多个节点。

Jupyter项目已经提供了一些Docker镜像,可以直接使用,也可以自定义、编译自己的容器镜像。

1、选择基础镜像

这里我选择 jupyter/all-spark-notebook:5811dcb711ba 为基础镜像,是由jupyter官方发布的。

  • 容器镜像源码,https://github.com/jupyter/docker-stacks
  • 容器镜像仓库,https://hub.docker.com/u/jupyter

2、编译添加自己的软件包

重新创建一个Dockerfile,然后添加自己的软件包。

  • 安装的软件包,包括:
    • based jupyter/all-spark-notebook
    • nodejs 8.10.0
    • bs4、lxml、ipyleaflet
    • py4j、pyspark
    • mlflow、airflow、tushare
    • jupyter labextension install jupyter-leaflet
  • 完整的Dockerfile,参考
    • https://github.com/databooks/databook/tree/master/build-tools/docker-build
  • 其它参考
    • Jupyter Docker Stacks on ReadTheDocs
    • Selecting an Image :: Core Stacks :: jupyter/all-spark-notebook
    • Image Specifics :: Apache Spark

编译镜像,运行:

docker build --build-arg "HTTP_PROXY=http://192.168.199.99:9999" -t openthings/databook .

其中,-t 指明镜像的名称,可以使用--build-arg传递临时参数到容器编译过程中,在使用时通过env获取,如 :

ENV HTTP_PROXY ${HTTP_PROXY}

3、配置到Kubernetes

使用docker images查看镜像openthings/databook是否已经创建成功。

  • 如果,是新安装JupyterHub,进去values.yaml改一下镜像的版本,然后运行helm安装即可。
  • 如果,已经安装完了,可以直接使用kubectl edit或者在Dashboard里直接修改deployment的images参数。

4、与Kubeflow中的差异

Kubeflow也采用了JupyterHub/Lab的运行框架,但是启动jupyternotebook的参数不同,因此二者不能混合使用。但在Kubeflow中可以采取类似的办法使用KubeFlow的配置文件重新编译容器镜像,然后配置到Kubernetes集群中使用。

  • 参考资料:
    • JupyterHub on Kubernetes部署与应用指南,https://my.oschina.net/u/2306127/blog/1837196
    • Ubuntu上使用Repo2Docker,https://my.oschina.net/u/2306127/blog/1865218
    • JupyterLab安装地图插件,https://my.oschina.net/u/2306127/blog/1859080
    • Databook-数据之书,https://my.oschina.net/u/2306127/blog/1860858

转载于:https://my.oschina.net/u/2306127/blog/1941406

你可能感兴趣的:(为JupyterHub自定义Notebook Images)