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

新手到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笔记本。

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

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

谢谢你的帮助。

你想运行容器作为守护进程。 然后,您可以docker stopdocker start容器并检索您的工作。

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

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

我作为一个命名的容器运行Docker:

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

'appu'是我给我的容器的名字。 -p将端口号8888从Linux转发到Windows。 -d使程序在后台运行,这样你就可以在控制台上获得$提示符,并且可以继续处理其他任务(这就是所谓的“恶魔化”,但不要被极客所吓倒,它只是意味着“请在后台默默地运行,并把我的控制台还给我!”)当你想停止容器,按名称

 $ docker stop appu 

下一次,你想要得到相同的容器,在早期会话中创build的所有文件,再次启动容器appu:

 $ docker start appu 

您可以挂载当前主机文件夹来replace容器中的默认/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