【发布时间】:2018-08-23 18:50:16
【问题描述】:
我以非 root 用户身份在 ubuntu 16.04 docker 容器内运行 jupyter 笔记本,并通过 .pem 文件配置 SSL。我的问题是,我无法执行jupyter notebook stop $port 命令来停止正在运行的服务器。
我通过执行 sudo HOME=/home/seiji -u seiji jupyter notebook 来更改 HOME 环境变量(它被改写为 seiji)来启动笔记本。
我可以通过以用户 (seiji) 身份运行它并输入 JUPYTER_RUNTIME_DIR 环境变量来执行通常的 jupyter notebook list 命令,jupyter 在该环境变量中查找包含服务器信息的 json 文件。例如:sudo JUPYTER_RUNTIME_DIR=/jupyter/runtime -u seiji jupyter notebook list 正确返回:
https://localhost:8888/ :: /jupyter/notebooks(我按照通常的方式在配置文件中指定运行时目录)。
我的问题是,我不知道如何以类似的方式执行jupyter notebook stop 8888。如果我按原样运行它,它会以 root 身份运行并告诉我There are no running servers。如果我以user:seiji 运行它,我会遇到 SSL 问题。如:
> sudo JUPYTER_RUNTIME_DIR=/jupyter/runtime -u seiji jupyter notebook stop 8888
返回错误。它开始:Shutting down server on port 8888 ...,然后打印以下内容:
SSL 错误 10 ('::1', 8888, 0, 0):[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:645)
我的猜测是它尝试使用“http”地址而不是“https”来访问服务器,但我不知道如何更改它。
我还尝试传递环境变量JUPYTER_CONFIG_DIR,其中包含列出.pem 文件位置的配置文件,其中c.NotebookApp.certfile = u'/jupyter/certs/mycert.pem' 行。当使用--certfile=[location] 从 cmdline 运行时,我也尝试过显式输入证书的位置,但似乎这被忽略了。有人有什么想法吗?
【问题讨论】:
-
目前我使用的是
pkill jupyter,与kill $(pgrep jupyter)相同,取自这里:stackoverflow.com/questions/10162707/…
标签: python docker ssl jupyter-notebook jupyter