我正在尝试使用
dockerspawner.SystemUserSpawner
,生成Jupyter实验室实例。
我的jupyterhub_配置。py有以下(额外)行:
c.Spawner.default_url = '/lab'
c.Spawner.cmd = ['jupyter', 'labhub']
c.JupyterHub.spawner_class = 'dockerspawner.SystemUserSpawner'
(加上
bind_url
和
hub_ip
跑步时(
jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
[D 2019-02-26 16:55:37.869 JupyterHub dockerspawner:644] Getting container 'jupyter-testuser'
[D 2019-02-26 16:55:37.873 JupyterHub dockerspawner:629] Container 8bf627d status: {'Dead': False,
'Error': '',
'ExitCode': 1,
'FinishedAt': '2019-02-26T15:55:29.518823812Z',
'OOMKilled': False,
'Paused': False,
'Pid': 0,
'Restarting': False,
'Running': False,
'StartedAt': '2019-02-26T15:55:28.446881243Z',
'Status': 'exited'}
[W 2019-02-26 16:55:37.874 JupyterHub web:1667] 500 GET /hub/user/testuser/ (www.xxx.yyy.zzz): Spawner failed to start [status=ExitCode=1, Error='', FinishedAt=2019-02-26T15:55:29.518823812Z]. The logs for testuser may contain details.
[D 2019-02-26 16:55:37.875 JupyterHub base:880] No template for 500
JupyterHub本身就陷入了一个(无穷无尽的?)循环尝试每10秒生成一次容器。
忽略丢失的500模板,我在容器状态消息中稍微聪明了一点,但是
docker logs jupyter-testuser
....
[C 2019-02-26 15:55:29.360 SingleUserLabApp notebookapp:1707] Running as root is not recommended. Use --allow-root to bypass.
[D 2019-02-26 15:55:29.360 SingleUserLabApp application:647] Exiting application: jupyter-notebook
当我改变
jupyterhub_config.py
c.Spawner.cmd = ['jupyter', 'labhub', '--allow-root']
c.DockerSpawner.remove = True
事情确实可行,但有一个不必要的警告:我现在是容器中的root,并且我在主目录中创建的任何文件都不是
testuser
root
测试用户
例如,无法删除这些文件。
(关于
c.DockerSpawner.remove = True
:如果我不包括这一点,JupyterHub将被卡在以前没有的容器上
--allow-root
)
文档建议初始配置应正确,并且
对于标准docker堆栈来说是不必要的(很明显,我在这里使用的是默认的,
jupyterhub/singleuser:0.9
).
为了进行比较,请使用
dockerspawner.DockerSpawner
很好。
我不知道我遗漏了什么,也不知道在哪里可以找到更多的调试选项。因此,欢迎提出任何建议。