jupyter/README_CN.md
2024-04-12 18:58:42 +08:00

136 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# jupyter-image-stacks
## Jupyter 项目为了数据科学
## 如果你看到了我,暂时不要使用代码,我们正在重构
## DOCKER 镜像没有问题,我们重构完会上传可靠的镜像
English | [中文](README_CN.md)
**为中国用户的文档**
**我们的docker镜像仓库是 https://hub.docker.com/r/ben0i0d/jupyter**
### 如何使用
**Docker**
* 没有数据持久化地使用:`docker run -d -p 8888:8888 ben0i0d/jupyter:<tag>`
* 提供数据持久化地使用:`docker run -d -p 8888:8888 -v "${PWD}":/home/jovyan ben0i0d/jupyter:<tag>`
**Jupyterhub**
在singleuser内的profile指定镜像
```
- description: 提供Python的科学计算环境提供了丰富的数值计算、优化、信号处理、统计分析等功能用于科学研究和工程应用。
display_name: Scipy
kubespawner_override:
image: ben0i0d/jupyter:scipy-c
```
### 全局说明
1. 如果自行构建或派生替换dockerfile中的基础镜像为dockerhub上的镜像
2. 对于例如MathematicaMATLAB等商业软件我们只提供打包具体激活方式及可能带来的后果由用户承担
3. 以下代码适用于解决matplotlib绘图缺失中文字体
```
from matplotlib.font_manager import FontProperties
# 设置中文字体路径
zh_font = FontProperties(fname="/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc")
# 将中文字体设置为默认字体
plt.rcParams["font.family"] = zh_font.get_name()
```
4. 以下代码适用于增加对conda虚拟目录的支持以实现自定义环境不丢失
1. 数据持久化
* docker启动时添加`-v "DATA-VOLUME":/opt/conda/envs/`
* Jupyterhub添加额外挂载点到`/opt/conda/envs/`
2. 虚拟环境安装内核
* 使用`conda create -n NAME *** ipykernel` 创建这个虚拟环境。使用`source activate NAME`切换到这个虚拟环境并且添加一个kernel到本地的`.jupyter`目录,使用`python -m ipykernel install --user --name NAME --display-name "DISPLAY-NAME"`完成
### 当前构建镜像清单
* Upstream: 镜像上游对标jupyter官方的minimal-notebook镜像
* 说明
1. 上游已经切换到`debian:trixie`GPU上游镜像也基于`debian:trixie`二次构建了镜像
2. 默认情况下我们添加了eoelab.org的域名证书这不会带来安全问题
3. 添加了sudo的无密码使用在安全要求较高的场景中不要允许特权提升
4. 提供软件包:文件压缩/解压(.zip),项目管理(git),中文字体fonts-wqy-zenhei
* LlinuxWith Desktop-GUI在无特权的情况下学习Linux系统提供Xfce桌面支持
* Python支持Python通过将python语法与生态系统相结合进行生产与研究。
* Scipy提供Python的科学计算环境提供了丰富的数值计算、优化、信号处理、统计分析等功能用于科学研究和工程应用。
* Scrpy: 提供Python的网页采取环境用于提取互联网上的数据实现自动化的信息收集和分析任务适用于数据挖掘、网络爬虫以及业务情报收集等应用场景。
* pyspark: 提供基于Python的Spark编程接口用于大规模数据处理和分析提供了强大的并行计算能力和丰富的数据操作函数适合在分布式环境中进行高效的数据处理和机器学习任务。
* pyflink: 提供基于Python的Flink编程接口用于对无边界和有边界的数据流进行有状态的计算,也提供了批处理API用于基于流式计算引擎处理批量数据的计算能力。
* pyaiWith GPU提供常用AI工具链提供了丰富的深度学习框架和NLP模型库使开发人员能够轻松构建和训练各种人工智能模型并应用于图像识别、自然语言处理等领域。
* Julia支持Julia高性能、动态的编程语言设计用于科学计算和数据分析具备类似Python的易读性和类似C的执行速度。
* 说明:
1. Julia镜像中的环境变量`JULIA_NUM_THREADS`,请在启动时根据理想的并发线程数进行配置
* Sagemath一个开源的数学计算系统结合了多个数学软件包提供了广泛的数学功能如数值计算、符号计算、离散数学和统计分析。它也是一个交互式计算环境方便进行数学建模、算法设计和学术研究。
* Dotnet: 一个跨平台的开发框架支持C#、F#、PW用于构建各种类型的应用程序包括Web应用、桌面应用和移动应用。它提供了丰富的类库和工具简化了开发过程并具有高性能和可扩展性。
* ScilabWith Desktop-GUI: 开源的数值计算软件适用于科学和工程领域中的数值分析、数据可视化、模拟和建模。它提供了丰富的数学函数和工具箱支持矩阵计算、符号计算和绘图功能是一个强大的数学工具尤其适用于教育和研究领域提供Xfce桌面支持包含APT可获取的全部插件。
* Octave: 开源的数值计算软件类似于Matlab用于科学计算、数据分析和数值模拟。它提供了强大的矩阵运算、绘图功能以及丰富的数值分析函数是一个免费且便捷的工具适合进行数学建模、算法开发和教学任务包含APT可获取的全部插件。
* Maple: 一个数学软件,透过智能文件界面提供强大数学引擎,可以轻松分析、探索、可视化和求解数学问题
* 说明
1.`license.dat libmaple.so`上传至主目录,每一次启动环境时,运行`cp license.dat /opt/maple/license && cp libmaple.so /opt/maple/bin.X86_64_LINUX/`完成激活再使用
* Mathematica:一个科学计算软件,在数据分析、数学计算等领域提供了强大方便的使用功能。
* 说明
1. 每一次启动环境时,运行`WolframKernel`完成手动激活,激活码查看`https://ibug.io/blog/2019/05/mathematica-keygen/`,如果多次激活不成功,请运行`rm /home/jovyan/.Mathematica/Licensing/mathpass`删除之前的许可记录
* MATLAB一种支持数据分析、算法开发和建模的编程和数值计算平台。
* 说明
1.`license.lic libmwlmgrimpl.so`上传至主目录,每一次启动环境时,运行`cp license.lic /opt/matlab/r2023b/licenses/ && cp libmwlmgrimpl.so /opt/matlab/r2023b/bin/glnxa64/matlab_startup_plugins/lmgrimpl/`完成激活再使用
* minimal:仅仅包含`Product:MATLAB`
* mcm:包含数学建模所需要的工具箱
### 插件清单
**全局**
* jupyterlab-language-pack-zh-CN:对中文的支持
* jupyterlab_tabnine用于自动补全、参数建议、函数文档查询、跳转定义
**局部**
### 镜像依赖关系
```mermaid
graph LR
Python-->PROGRAM{PROGRAMLANG}
PROGRAM-->PC(Julia)
PROGRAM-->PR(mojo)
Python-->PRA(Scipy)
Python-->PRB(Scrpy)
PRA-->PRAA(pyai)
PRA-->PRAB(pyspark)
PRA-->PRAC(pyflink)
Python-->MATH{MATH-TOOL}-->MA(Octave)
MATH-->MB(Scilab)
MATH-->MC(Sagemath)
MATH-->ME(Mathematica)
MATH-->MD(MATLAB)-->MDA(minimal)-->MDAA(mcm)
```
## 上游
**软件包版本**
* cuda 12.2.0
* Python 3.11
* Julia latest
* spark 3.5.1
* jupyterlab 4
* Matlab R2023b
* Mathematica 13.3.1
* Maple 2023
**镜像源**
* conda bfsuhttps://mirrors.bfsu.edu.cn/help/anaconda/
* pip bfsuhttps://mirrors.bfsu.edu.cn/help/pypi/
* apt ustchttps://mirrors.ustc.edu.cn/help/debian.html
* apache tuna: https://mirrors.ustc.edu.cn/apache/
* julia-pkg ustc: https://mirrors.ustc.edu.cn/julia/
### 项目上游
jupyter团队项目 https://github.com/jupyter/docker-stacks
**但是我们与上游差别较大包括源软件包本地化与扩展等因此如果您从本项目派生遇到问题请不要到jupyter团队提问这会加大他们的工作量**
### kernel
* Pythonhttps://ipython.org/
* Julia: https://github.com/JuliaLang/IJulia.jl
* R: http://irkernel.github.io/
* Octave: https://github.com/Calysto/octave_kernel
* MATLAB: https://github.com/mathworks/jupyter-matlab-proxy
## 必要的版权说明
对于派生自其他团队的代码,我们在文件头添加了原版版权声明,我们保留并且支持其他开发团队版权