博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JupyterHub容器镜像自定义方法与步骤
阅读量:5916 次
发布时间:2019-06-19

本文共 3693 字,大约阅读时间需要 12 分钟。

hot3.png

IPython、JupyterHub、JupyterLab是用于大数据分析和机器学习的流行的环境,JupyterHub可以运行于Kubernetes集群环境中,从而供多人同时使用,支持动态伸缩。

虽然登录后可以通过pip和conda安装软件包,但是服务重启或者pod漂移后将会被重新初始化,所安装的软件和配置参数、使用状态都会丢失。

按照Kubernetes的原则,pod在运行过程中应该是固定的,以便于复制、伸缩和迁移,所有的动态数据应该保留到网络中的共享存储之中。因此,我们可以将所有的软件预先安装在容器中,然后部署镜像到集群中即可。

下面介绍JupyterHub容器镜像的自定义方法与步骤。

1、准备文件

创建Dockerfile

创建一个目录(或首先创建一个git项目)。然后编辑一个 Dockerfile 文件用于后续的Docker容器镜像构建。

# Copyright (c) Jupyter Development Team.# Distributed under the terms of the Modified BSD License.FROM jupyter/all-spark-notebook:5811dcb711baLABEL maintainer="Databook Project,https://github.com/databooks
"USER root# ====================================================================# Add proxy, using --build-arg "HTTP_PROXY=http://192.168.199.99:9999"ENV HTTP_PROXY ${HTTP_PROXY}ENV HTTPS_PROXY ${HTTP_PROXY}ENV http_proxy ${HTTP_PROXY}ENV https_proxy ${HTTP_PROXY}ENV SLUGIFY_USES_TEXT_UNIDECODE=yes#Add conda install mirror:RUN echo $http_proxy && \ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ && \ conda config --set show_channel_urls yes#Add pip install mirror:RUN echo "[global] \index-url = http://pypi.tuna.tsinghua/simple \trusted-host = \ pypi.tuna.tsinghua \timeout = 120 \" > /etc/pip.conf# ====================================================================# ====================================================================USER $NB_UIDRUN pip install --upgrade pip RUN pip install bs4 && \ pip install lxml && \ pip install py4j && \ pip install pyspark && \ pip install tushareRUN conda install -y nodejs scikit-image matplotlab ipyleafletRUN conda install -y tensorflow apache-airflow mlflowRUN conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorchRUN conda update --allRUN conda install jupyterlab=0.34.12RUN jupyter labextension install @jupyter-widgets/jupyterlab-managerRUN jupyter labextension install jupyter-leafletRUN jupyter labextension upgrade --allRUN jupyter lab build# ====================================================================ENV HTTP_PROXY ""ENV HTTPS_PROXY ""ENV http_proxy ""ENV https_proxy ""# ====================================================================

注意事项:

  • 更新jupyterhub的版本。
  • 重构jupyter的版本。
  • 安装指定的jupyterlab版本。

创建编译脚本文件

创建一个shell脚本文件,可以快速重复执行容器镜像的构建操作。

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

使用DockerHub构建

将上述文件放到github.com的项目中,就可以在hub.docker.com启动自动构建工作(比本地构建更快)。然后将镜像拉取到本地即可,也可以推送到阿里云/AWS等的镜像服务中,再拉取或者直接使用。

参考文件:

2、编译镜像

执行脚本,将得到所构建的镜像,名为openthings/databook:latest。

为了正常下载所需要的软件包,可以指定proxy参数,如下:

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

3、分发容器镜像到节点

为了在集群中所有节点都能够运行JupyterHub服务容器,需要将镜像部署到所有的节点。有几种方法:

  • 各节点从dockerhub或aliyun/aws的镜像服务直接拉取。如果是在局域网环境,将会带来较大的网络流量,速度较慢。
  • 上传到本地的Registry服务(如Harbor/Nexus)拉取,然后各节点从其上拉取容器镜像。
  • 如果没有本地镜像服务,也可以直接上传到各个节点。
    • 导出镜像:docker save  openthings/databook -o databook.tar
    • 复制镜像:scp databook.tar user@node0:~/databook.tar
    • 导入镜像:到目标节点,执行 docker load  -i databook.tar

下一步,部署(或更新)Kubernetes集群中的JupyterHub服务。

4、部署JupyterHub服务

首先修改helm chart目录 deploy-k8s 的values.yaml文件,将镜像地址改为openthings/databook:lates,然后使用helm来部署JupyterHub的chart。

安装:

helm install ./deploy-k8s --version=v0.6 --name=databook --namespace=databook

删除:

helm del --purge databook

更新:

helm upgrade databook ./deploy-k8s

更多参考:

5、启动JupyterHub应用

到Kubernetes Dashboard,查看命名空间jupyter的service的IP地址,然后到浏览器输入。缺省页面为notebook,将地址后面改为lab,即可进入Jupyterlab的多窗口风格页面。

d7d3488a3e9b946ab1608949eefba0df7ce.jpg

 

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

你可能感兴趣的文章
Variable Scope in C++
查看>>
计算功能实现过程
查看>>
使用AutoFac组织多项目应用程序
查看>>
kernel panic必备知识
查看>>
Qt正则表达式小结
查看>>
zxing-master core编译
查看>>
Python基础-python数据类型之元祖、字典(四)
查看>>
window平台搭建Hudson服务器
查看>>
ABP框架设置默认语言
查看>>
推荐阅读
查看>>
故障排查与优化深入专题(十):新服务器上架与Linux操作系统内核参数调优...
查看>>
手动开启tomacat服务器
查看>>
myeclipse快捷键
查看>>
java中系统中的常量
查看>>
pdf 转成 一张图片
查看>>
Servlet从浅入深
查看>>
面试(Java之IO与NIO)
查看>>
html基础学习
查看>>
windows7安装完上不了网
查看>>
不等式选讲
查看>>