Jupyterhub /单用户共享卷
我试图在Ubuntu 16.04上安装一个Jupyterhub服务器,很像https://github.com/minrk/jupyterhub-demo 。
我改变了jupyterhub_config.py支持持久存储使用这里提供的技巧https://github.com/jupyterhub/dockerspawner#data-persistence-and-dockerspawner :
notebook_dir = os.environ.get('DOCKER_NOTEBOOK_DIR') or '/home/jovyan/work' c.DockerSpawner.notebook_dir = notebook_dir c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir }
不过,我想为用户组添加一个共享的“团队”数量。 我有一个用户名(键)和队名(值)的字典映射用户到团队。
理想情况下,我会陈述如下:
c.DockerSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir, 'jupyterhub-team-{teamname}': os.path.join(notebook_dir, 'shared' }
但我不知道如何将另一个{名字}映射传递给dockerspawner。
我试着摆弄这些东西,但目前还没有结果:
c.DockerSpawner. ... extra_create_kwargs = Dict(config=True, help="Additional args to pass for container create") extra_start_kwargs = Dict(config=True, help="Additional args to pass for container start") extra_host_config = Dict(config=True, help="Additional args to create_host_config for container create")
有任何想法吗?
PS:这个问题与jupyterhub中的共享,可写文件夹有些相关
从@minrk回复你在GitHub上收到几个星期后在这里发布。
对于未在默认configuration对象中公开的更高级逻辑,您还可以在configuration文件中inheritanceDockerSpawner的子类:
from dockerspawner import DockerSpawner class MyDockerSpawner(DockerSpawner): def start(self): # username is self.user.name team = 'myteam' # add team volume to volumes self.volumes['jupyterhub-team-{}'.format(team) = '/home/shared' return super().start() c.JupyterHub.spawner_class = MyDockerSpawner