zenghongtu / blog

Person blog
https://blog.jasonzeng.dev
65 stars 11 forks source link

Docker 快速部署 Jupyterhub 实现 Jupyter Notebook多用户管理 #130

Open zenghongtu opened 1 year ago

zenghongtu commented 1 year ago

我们项目组里调 Prompt 用的是Docker部署的 Jupyter Notebook,随着组里的 'Prompt工程师' 剧增,暴露出来的问题主要有以下几个:

  1. 用自己名字命名文件夹的方式进行隔离,没有权限管控
  2. 因为是单用户,一打开会看到都是其他人打开的所有 Notebook(头皮发麻..)
  3. 单容器环境跑多了就非常卡顿,得重启一下,但重启后 token 又重新生成了(偷懒没看怎么固定 token )

利用 Jupyterhub 可以解决上面的问题,它能够进行前置鉴权、启动JuypterLab实例和分发请求。 Juypter 和 Jupyterhub的关系如下图:

大多数的教程中是宿主机部署 Jupyterhub,容器部署Jupyter,或者是K8s部署,这样方便管理 Jupyter 实例,但配置文件写着看得脑壳大。 好在官方提供了一个非k8s的容器部署示例

我在它的基础上调整了这个几个点:

  1. 将实例的用户名映射到我们现有的用户名文件夹
  2. 增加了共享文件夹,实现夸实例共享文件

仓库地址:https://github.com/zenghongtu/jupyterhub-deploy-docker

快速部署:

git clone https://github.com/zenghongtu/jupyterhub-deploy-docker
cd compose
docker compose up -d

两个小坑:

  1. 因为没有初始密码,初次部署需要注册 admin 账号
  2. 如果创建notebook遇到 Permission denied ,需要在宿主机上 chmod 777该实例对应的文件夹