Docker中安装Jupyterhub实现多用户使用


按照下面的命令依次运行即可

1. 启动docker容器

docker run -p 8001:8000 -d --name jupyterhub -v /opt/jupyterhub/jupyterhub:/srv/jupyterhub -v /opt/jupyterhub/home:/home --restart=always jupyterhub/jupyterhub:5
 jupyterhub

2. 进入容器

docker exec -it jupyterhub /bin/bash  

3. 环境配置

apt-get update &&
apt-get install -y python3-venv vim &&
jupyterhub --generate-config &&
chmod 777 /home

4. 用户配置

useradd hub_admin
passwd hub_admin
chmod 777 /home
su hub_admin
python3 -m pip install jupyterlab notebook -i https://pypi.tuna.tsinghua.edu.cn/simple
python3 -m pip install jupyterhub-nativeauthenticator -i https://pypi.tuna.tsinghua.edu.cn/simple

exit

5.编辑配置文件

配置内容复制到配置文件里面即可

# 允许所有可以成功验证对 Hub 访问权限的用户
c.Authenticator.allow_all = True
c.Authenticator.allow_existing_users = True

# 设置管理员用户
c.Authenticator.admin_users = {'hub_admin'}

# 允许 root 用户启动 JupyterLab
c.Spawner.args = ['--allow-root', '--NotebookApp.terminals_enabled=False']

# 设置单用户服务器的监听 IP 地址
c.Spawner.ip = '0.0.0.0'

# 设置默认启动 URL 为 JupyterLab
c.Spawner.default_url = '/lab'

# 设置单用户服务器的工作目录
c.Spawner.notebook_dir = '~'

# 设置启动命令为 JupyterLab
c.Spawner.cmd = ['jupyter-labhub']

# 允许创建系统用户
c.LocalAuthenticator.create_system_users = True

# 配置使用 NativeAuthenticator
c.JupyterHub.authenticator_class = 'nativeauthenticator.NativeAuthenticator'

# 配置用户的工作目录
c.LocalProcessSpawner.notebook_dir = '/home/{username}/notebooks'

# 导入所需模块
import os
import subprocess

# 定义 pre_spawn_hook 函数,用于在用户服务器启动之前创建用户目录
def create_user_directory(spawner):
    username = spawner.user.name
    user_home = f"/home/{username}"
    user_notebook_dir = os.path.join(user_home, "notebooks")

    # 检查用户是否存在
    try:
        subprocess.check_call(['id', username])
    except subprocess.CalledProcessError:
        # 用户不存在,创建用户
        subprocess.check_call(['useradd', '-m', username])

    # 创建用户的 notebook 目录
    if not os.path.exists(user_notebook_dir):
        os.makedirs(user_notebook_dir)
        subprocess.check_call(['chown', '-R', f'{username}:{username}', user_home])

# 配置使用 LocalProcessSpawner
c.JupyterHub.spawner_class = 'jupyterhub.spawner.LocalProcessSpawner'

# 配置 pre_spawn_hook
c.Spawner.pre_spawn_hook = create_user_directory

# 配置自定义模板路径
import nativeauthenticator
c.JupyterHub.template_paths = [f"{os.path.dirname(nativeauthenticator.__file__)}/templates/"]

# 配置服务,如 idle-culler
c.JupyterHub.services = [
    {
        'name': 'idle-culler',
        'command': ['python3', '-m', 'jupyterhub_idle_culler', '--timeout=3600'],
        'admin': True  # 1.5.0 需要服务管理员权限
    }
]

### 创建和配置数据可视化大屏 在 Jupyter Notebook 中创建和配置数据可视化大屏涉及多个方面,包括设置环境、准备数据以及利用合适的库来构建视觉效果丰富的图表。 #### 设置工作环境 为了确保能够在 Jupyter Notebook 中顺利进行数据可视化的开发,建议安装必要的 Python 库。这些库通常包括 `matplotlib` 和 `seaborn` 这样的绘图工具,也可能是更高级别的仪表板解决方案如 `plotly-dash` 或者 `bokeh-server`。对于大型屏幕上的动态交互式展示来说,后者两个选项更为合适[^1]。 ```bash pip install plotly dash bokeh jupyterlab ``` #### 准备基础结构 启动一个新的 Jupyter Notebook 文件用于承载整个项目,并导入所需的模块: ```python import pandas as pd from bokeh.plotting import figure, show from bokeh.io import output_notebook output_notebook() ``` 这段代码初始化了一个 Bokeh 的绘图环境并允许直接在笔记本内显示图形[^2]。 #### 构建布局组件 定义各个子视图的位置与大小关系,可以借助于网格系统或自定义 CSS 来调整页面元素之间的间距及排列方式。如果使用 Dash,则可以通过其内置的 HTML 组件轻松搭建响应式的网页框架;而 Bokeh 提供了 GridPlot 类帮助开发者组合多个独立的小部件形成复杂的大规模看板[^3]。 ```python # Example of creating a grid layout with Bokeh plots p1 = figure(title="First Plot", ...) p2 = figure(title="Second Plot", ...) grid = gridplot([[p1, p2]]) show(grid) ``` #### 数据处理与更新机制 考虑到实时性需求,在设计过程中还需要考虑如何高效获取最新数据源并向前端推送变化后的状态。这可能涉及到定时任务调度或是 WebSocket 推送技术的应用。Dash 支持回调函数的方式实现事件驱动的数据刷新逻辑,使得每一次用户互动都能触发相应的计算过程并即时反映到界面上去. #### 自动化部署方案 最后一步就是将本地调试好的版本发布出去让更多人访问到了。此时可以选择 Heroku、Netlify 等云服务平台一键部署应用实例,也可以通过 Docker 容器封装依赖项以便移植性强地迁移至生产环境中运行.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值