Docker 上的 Tensorflow:如何保存 Jupyter notebook 上的工作?
Tensorflow on Docker: How to save the work on Jupyter notebook?
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 主机地址]:8888 从浏览器打开 Jupyter 笔记本。
但是,在完成一些工作(例如,创建一个新笔记本)之后,当我按 Ctrl-C 两次停止服务器时,所有新工作都丢失了。也许我遗漏了一些基本的东西,所以让我把我不确定的东西放在这里:
- 我不应该停止服务器吗?
- 我在重新启动时使用相同的 "docker run" 命令。对吗?
感谢您的帮助。
您希望 运行 将容器作为守护进程。然后您可以 docker stop
和 docker 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
使程序 运行 在后台运行,这样您就可以在控制台上得到 $
提示并可以继续处理其他任务(这就是所谓的'demonizing',但不要被极客吓倒。它只是意味着 'please run silently in the background, and give me back my console'!)
当你想停止容器时,按名称提及它
$ docker stop appu
下次您想要取回同一个容器以及您在之前会话中创建的所有文件时,再次启动容器应用程序:
$ docker start appu
您可以 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
第一次,运行 Docker 作为交互模式下的命名容器。这会给你 link with token。对于随后的 运行s,以名称启动容器。这是一个例子:
第一个运行:
$ docker run -p 8888:8888 -d --name <name> gcr.io/tensorflow/tensorflow
需要时使用 ctrl-C 停止第一个 运行。
后续 运行s:
$ docker start <name>
这会在后台模式下自动 运行 docker。
要停止容器:
$ docker stop <name>
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 主机地址]:8888 从浏览器打开 Jupyter 笔记本。
但是,在完成一些工作(例如,创建一个新笔记本)之后,当我按 Ctrl-C 两次停止服务器时,所有新工作都丢失了。也许我遗漏了一些基本的东西,所以让我把我不确定的东西放在这里:
- 我不应该停止服务器吗?
- 我在重新启动时使用相同的 "docker run" 命令。对吗?
感谢您的帮助。
您希望 运行 将容器作为守护进程。然后您可以 docker stop
和 docker 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
使程序 运行 在后台运行,这样您就可以在控制台上得到 $
提示并可以继续处理其他任务(这就是所谓的'demonizing',但不要被极客吓倒。它只是意味着 'please run silently in the background, and give me back my console'!)
当你想停止容器时,按名称提及它
$ docker stop appu
下次您想要取回同一个容器以及您在之前会话中创建的所有文件时,再次启动容器应用程序:
$ docker start appu
您可以 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
第一次,运行 Docker 作为交互模式下的命名容器。这会给你 link with token。对于随后的 运行s,以名称启动容器。这是一个例子:
第一个运行:
$ docker run -p 8888:8888 -d --name <name> gcr.io/tensorflow/tensorflow
需要时使用 ctrl-C 停止第一个 运行。
后续 运行s:
$ docker start <name>
这会在后台模式下自动 运行 docker。
要停止容器:
$ docker stop <name>