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 需要服务管理员权限
    }
]

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Docker配置JupyterHub,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装DockerDocker Compose。如果没有,请先安装它们。 2. 创建一个名为`jupyterhub`的文件夹,并在其创建一个名为`Dockerfile`的文件。 3. 在`Dockerfile`添加以下内容: ```Dockerfile FROM jupyterhub/jupyterhub:1.4 # 安装 JupyterHub 的依赖包 RUN pip install jupyterhub-dummyauthenticator # 添加自定义配置文件 COPY jupyterhub_config.py /srv/jupyterhub/jupyterhub_config.py ``` 这个Dockerfile基于官方的JupyterHub镜像,并安装了一个名为`jupyterhub-dummyauthenticator`的虚拟认证器,以便在测试环境使用。您可以根据需要更改认证器。 4. 在`jupyterhub`文件夹创建一个名为`jupyterhub_config.py`的文件,并添加您的JupyterHub配置。例如: ```python c.JupyterHub.authenticator_class = 'dummyauthenticator.DummyAuthenticator' c.JupyterHub.spawner_class = 'dockerspawner.DockerSpawner' .DockerSpawner.image = 'jupyter/scipy-notebook' c.DockerSpawner.remove_containers = True # 添加其他配置选项... ``` 这里使用了`dummyauthenticator`作为虚拟认证器,并使用了`dockerspawner`作为启动器。您可以根据需要添加其他配置选项。 5. 确保您在`jupyterhub`文件夹有一个名为`jupyterhub_config.py`的配置文件和一个名为`Dockerfile`的Docker文件。 6. 打开终端,导航到`jupyterhub`文件夹,并构建Docker镜像: ``` docker build -t jupyterhub-image . ``` 这会构建一个名为`jupyterhub-image`的Docker镜像。 7. 创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3' services: jupyterhub: image: jupyterhub-image ports: - 8000:8000 volumes: - /var/run/docker.sock:/var/run/docker.sock ``` 这个`docker-compose.yml`文件定义了一个名为`jupyterhub`的服务,使用之前构建的Docker镜像,并将主机的8000端口映射到容器的8000端口。 8. 在终端导航到包含`docker-compose.yml`文件的目录,并运行以下命令启动JupyterHub: ``` docker-compose up -d ``` 现在,您应该可以通过访问`http://localhost:8000`来访问JupyterHub。 请注意,这只是一个简单的示例配置。根据您的需求,您可能需要进行更多的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值