【问题标题】:Tensorflow on Docker: How to save the work on Jupyter notebook?Docker 上的 TensorFlow:如何在 Jupyter notebook 上保存工作?
【发布时间】:2016-08-13 21:43:54
【问题描述】:

Docker 和 Tensorflow 的新手并尝试它们。安装(在win10上,使用hyper-v驱动)很顺利,我可以运行了

docker run -p 8888:8888 -it gcr.io/tensorflow/tensorflow

然后得到这样的输出:

[I 23:01:01.188 NotebookApp]←(B Serving notebooks from local directory: /notebooks
[I 23:01:01.189 NotebookApp]←(B 0 active kernels
[I 23:01:01.189 NotebookApp]←(B The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/
[I 23:01:01.189 NotebookApp]←(B Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

我可以通过打开 [docker host address]:8888 从浏览器打开 Jupyter notebook。

但是,在做了一些工作(例如,创建一个新笔记本)之后,当我按 Ctrl-C 两次停止服务器时,所有新工作都丢失了。也许我错过了一些基本的东西,所以让我把我不确定的东西放在这里:

  1. 我不应该停止服务器吗?
  2. 我在重新启动时使用相同的“docker run”命令。对吗?

感谢您的帮助。

【问题讨论】:

    标签: docker tensorflow jupyter-notebook


    【解决方案1】:

    您可以将mount当前主机文件夹替换为容器中默认的/notebooks文件夹。这是一个例子:

    $ docker run -p 8888:8888 -v `pwd`:/notebooks -it gcr.io/tensorflow/tensorflow
    [I 02:34:49.393 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
    [W 02:34:49.411 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
    [I 02:34:49.420 NotebookApp] Serving notebooks from local directory: /notebooks
    [I 02:34:49.421 NotebookApp] 0 active kernels 
    [I 02:34:49.421 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=b9da5de7f61d6a968dc07e55c6157606a4f2f378cd764a91
    [I 02:34:49.421 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    [C 02:34:49.422 NotebookApp] 
    
        Copy/paste this URL into your browser when you connect for the first time,
        to login with a token:
            http://localhost:8888/?token=b9da5de7f61d6a968dc07e55c6157606a4f2f378cd764a91
    

    【讨论】:

      【解决方案2】:

      您希望将容器作为守护程序运行。然后您可以docker stopdocker start 容器并检索您的工作。

      docker run -td -p 8888:8888 gcr.io/tensorflow/

      使用-it 运行使容器交互并在前台运行,这就是当您取消它时工作丢失的原因。最佳实践并将其作为守护进程运行,这样您就不必按 CTRL+C 退出,而是让 docker 处理状态。

      【讨论】:

      • 您能否详细说明答案。例如,关于“如果 docker 作为守护进程运行,它将如何维护状态”和“它如何作为守护进程运行”的信息将很有用。当 docker start 启动容器时,如何保存容器?
      • 这是一个非常广泛的问题。我建议您首先阅读docs.docker.com 的文档,然后在stackoverflow 上发布您遇到的任何具体问题。
      【解决方案3】:

      我将 Docker 作为命名容器运行:

      $ docker run -p 8888:8888 -d --name appu b.gcr.io/tensorflow-udacity/assignments
      

      appu 是我给我的容器起的名字。

      -p 将端口号 8888 从 Linux 转发到 Windows。

      -d 使程序在后台运行,这样你就可以在控制台上得到$ 提示,并可以继续处理其他任务(这就是所谓的“妖魔化”,但不要被吓倒极客。它只是意味着“请在后台安静地运行,并把我的控制台还给我!” 当您要停止容器时,请按名称提及它

      $ docker stop appu
      

      下次您想要恢复同一个容器以及您在之前会话中创建的所有文件时,再次启动容器应用程序:

      $ docker start appu
      

      【讨论】:

      • 不错的答案,但是...如果我在后台运行您提到的 docker,如何访问 Jupyter?没有链接什么的。有什么建议吗?
      【解决方案4】:

      第一次,以交互模式将 Docker 作为命名容器运行。这将为您提供带有令牌的链接。对于后续运行,使用名称启动容器。这是一个例子:

      第一次运行:

      $ docker run -p 8888:8888 -d --name <name> gcr.io/tensorflow/tensorflow
      

      如果需要,使用 ctrl-C 停止第一次运行。

      后续运行:

      $ docker start <name>
      

      这将在后台模式下自动运行 docker。

      停止容器:

      $ docker stop <name>
      

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 2017-11-05
        • 2023-02-16
        • 1970-01-01
        • 2017-06-04
        • 2017-02-24
        • 2023-02-26
        • 1970-01-01
        相关资源
        最近更新 更多