【问题标题】:Authenticating Jupyter notebook on docker在 docker 上对 Jupyter 笔记本进行身份验证
【发布时间】:2017-10-17 06:14:26
【问题描述】:

我正在尝试在我的 Mac 笔记本电脑上安装 jupyter notebook docker 容器。有以下选项

docker run -dit --rm -p 8888:8888 gcr.io/tensorflow/tensorflow

容器启动,我可以按预期在http://[cointainer-IP]:8888 上对其进行评估。

但是,它会将我带到身份验证屏幕并要求提供令牌。如何获取令牌,我应该在 docker 容器中查找哪个日志

【问题讨论】:

    标签: docker jupyter-notebook


    【解决方案1】:

    容器的stdout 将为您提供一个特殊的 URL,该 URL 有一个令牌供您登录。您可以在前台运行(不使用-d),也可以使用docker logs <container_id> 检查当前容器日志。在那里,您应该会看到如下输出:

    [I 16:57:05.859 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
    [W 16:57:05.871 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
    [I 16:57:05.877 NotebookApp] Serving notebooks from local directory: /notebooks
    [I 16:57:05.877 NotebookApp] 0 active kernels 
    [I 16:57:05.877 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=42685cc246e6571c0f16417327fbf4c398061125c00edea5
    [I 16:57:05.877 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    [C 16:57:05.878 NotebookApp] 
    
        Copy/paste this URL into your browser when you connect for the first time,
        to login with a token:
            http://localhost:8888/?token=42685cc246e6571c0f16417327fbf4c398061125c00edea5
    

    【讨论】:

    • 附加到此输出的令牌对我不起作用。我不断收到“无效令牌”。任何想法为什么这是/如何解决它?
    • 这对我不起作用。我不断收到@jblakeley 的“无效令牌”。但是在lsof -ti:8888 | xargs kill -9 杀死使用端口 8888 的进程后,我不再收到烦人的令牌消息
    • 确保您没有在主机上运行 jupyter。这将干扰令牌输入,因为两者都将在端口 8888 上。停止我主机上的本地版本的 jupyter 并输入令牌解决了我的问题
    • @user3780173 这是关键!我遇到过同样的问题。希望这在文档中的某个地方非常清楚地列出!
    【解决方案2】:

    您还可以禁用令牌或使用start-notebook.sh 脚本的--NotebookApp.token='' 参数添加自定义令牌。从终端处理令牌通常会导致错误并且不舒服。

    禁用令牌

    简单如下:

    docker run -d -p 8888:8888 jupyter/pyspark-notebook start-notebook.sh --NotebookApp.token=''
    

    自定义令牌

    但是,不建议这样做,您可以选择定义一个简单的密码:

    docker run -d -p 8888:8888 jupyter/pyspark-notebook start-notebook.sh --NotebookApp.token='MY_EASY_PASSWORD'
    

    【讨论】:

    • 我在docker run中使用上述方法成功禁用了密码
    • 但我有疑问如何在 docker-compose 文件中做同样的事情??
    【解决方案3】:

    我已经为自己编写了以下代码来自动打开浏览器并进入身份验证:

    docker exec -it <docker container name> bash -c 'jupyter notebook list' | grep http | cut -f1 -d ' ' | xargs xdg-open
    

    适用于 Ubuntu 18.04

    【讨论】:

    • 您的命令为我返回了一个错误。简单地做docker exec -it &lt;docker-container-name&gt; bash -c 'jupyter notebook list' 是我的解决方案。感谢您的回复!
    • 嗨@GabrielZiegler,你能具体说明你收到了什么错误吗?如果可能的话,您使用的是什么 docker 版本的 jupyter notebook 和/或您的操作系统版本?
    • 抱歉,我的 xdg-open 默认配置错误,这就是我在 URL 中执行 xdg-open 时遇到错误的原因。错误:which: no firefox-bin in (/opt/firefox-nightly) Opening in existing browser session.
    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 2018-04-27
    • 1970-01-01
    • 2020-10-29
    • 2016-03-29
    • 1970-01-01
    • 2017-09-18
    • 2017-11-24
    相关资源
    最近更新 更多