Docker上的Tensorflow:如何在Jupyter笔记本上保存工作?

ckc*_*kcn 8 docker tensorflow jupyter-notebook

Docker和Tensorflow的新手并试用它们.安装(在win10上,使用hyper-v驱动程序)运行良好,我可以运行

docker run -p 8888:8888 -it gcr.io/tensorflow/tensorflow
Run Code Online (Sandbox Code Playgroud)

得到这样的输出:

[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).
Run Code Online (Sandbox Code Playgroud)

我可以通过打开[docker host address]:8888从浏览器打开Jupyter笔记本.

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

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

谢谢你的帮助.

GHE*_*iLD 6

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

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

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

  • 你能详细说明答案吗?例如,有关"如果docker作为守护程序运行将如何维护状态"和"如何作为守护程序运行"的信息将是有用的.当docker start <container#>启动容器时,如何保存容器? (4认同)

小智 6

您可以挂载当前主机文件夹以替换/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
Run Code Online (Sandbox Code Playgroud)


Raj*_*aja 5

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

$ docker run -p 8888:8888 -d --name appu b.gcr.io/tensorflow-udacity/assignments
Run Code Online (Sandbox Code Playgroud)

appu 是我给我的容器的名字.

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

-d让程序在后台运行,这样你就$可以在控制台上得到提示并继续使用其他任务(这就是所谓的'妖魔化',但不要被极客吓倒.这只是意味着'请运行'默默地在后台,让我回到我的控制台'!)当你想要停止容器时,请按名称提及

$ docker stop appu
Run Code Online (Sandbox Code Playgroud)

下次要使用在先前会话中创建的所有文件返回同一容器时,再次启动容器appu:

$ docker start appu
Run Code Online (Sandbox Code Playgroud)