我作为非root用户在ubuntu 16.04 docker容器中运行jupyter笔记本,并通过.pem
文件配置SSL。我的问题是,我无法执行jupyter notebook stop $port
命令来停止正在运行的服务器。
我通过执行sudo HOME=/home/seiji -u seiji jupyter notebook
来启动笔记本,以更改HOME
环境变量(已知为seiji)。
我可以通过以用户(jupyter notebook list
)运行它并执行seiji
环境变量来执行通常的JUPYTER_RUNTIME_DIR
命令,其中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 ...
,但随后打印以下内容:
10上的SSL错误(' :: 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运行时明确输入证书的位置,但似乎忽略了这一点。有没有人有任何想法?