Windows 在Docker中运行TensorFlow时难以访问Jupyter笔记本
我的问题: 这里是ML领域的新手。我目前正试图通过docker设置tensorflow,但一旦tensorflow开始运行,我就很难使用jupyter笔记本。作为将来的参考,我将使用Windows10、powershell、Python2.7和oracle virtualbox(v.5.0.16) 我非常自信docker能够正常工作,因为我已经完成了他们的安装教程(“从Powershell使用docker”),没有任何问题——我能够在那里运行hello world示例。我还能够用这个命令成功地运行ubuntu终端Windows 在Docker中运行TensorFlow时难以访问Jupyter笔记本,windows,powershell,docker,machine-learning,tensorflow,Windows,Powershell,Docker,Machine Learning,Tensorflow,我的问题: 这里是ML领域的新手。我目前正试图通过docker设置tensorflow,但一旦tensorflow开始运行,我就很难使用jupyter笔记本。作为将来的参考,我将使用Windows10、powershell、Python2.7和oracle virtualbox(v.5.0.16) 我非常自信docker能够正常工作,因为我已经完成了他们的安装教程(“从Powershell使用docker”),没有任何问题——我能够在那里运行hello world示例。我还能够用这个命令成功地运
docker run -it ubuntu bash
然后,我遵循了命令,一切看起来都正常——我为tensorflow输入了docker run命令:
docker run -it b.gcr.io/tensorflow/tensorflow
得到了这个输出:
[I 19:33:16.330 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[W 19:33:16.360 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[W 19:33:16.360 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using authentication. This is highly insecure and not recommended.
[I 19:33:16.365 NotebookApp] Serving notebooks from local directory: /notebooks
[I 19:33:16.365 NotebookApp] 0 active kernels
[I 19:33:16.365 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/
[I 19:33:16.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
然而,当我试图访问位于localhost:8888的jupyter笔记本时,chrome表示几秒钟内无法访问该站点,服务器拒绝连接
我尝试过的解决方案:
- 我听从了他的建议。当我运行他们建议启动新tensorflow容器的命令时,我得到错误:
我还按照他们的建议使用virtualbox更改了端口设置,这似乎也没有什么不同exec: "./run_jupyter.sh": stat ./run_jupyter.sh: no such file or directory docker: Error response from daemon: Container command not found or does not exist..
- 当我使用docker machine ls命令时,我没有转到localhost,而是尝试了为驱动程序列出的IP地址。这里也不走运
- 我的第一次尝试是使用docker附带的quickstart终端,我被困在了同一个地方。所以现在我有了一个“默认值”,从我使用quickstart终端设置docker开始,还有一个“我的默认值”,从我使用powershell设置docker开始。Stackexchange评论说,quickstart终端不如仅使用powershell工作得好,因此我开始使用powershell
- 尝试使用docker machine env更改哪个驱动程序处于活动状态,然后对该驱动程序的IP地址运行tensorflow run命令,但仍然没有成功
- 尝试跳过jupyter笔记本,按照tensorflow安装的下一步(“从命令行运行tensorflow”)的建议,通过python从命令行运行所有内容,但我甚至无法从那里导入tensorflow:
>>> import tensorflow as tf Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named tensorflow
我不知道如果不先运行jupyter,这是否可能,但我认为值得一试。这个问题可能与这篇文章的主题无关,但如果有人知道为什么会这样,那也会很有帮助>>将tensorflow作为tf导入 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportError:没有名为tensorflow的模块
我感谢所有提供的帮助。请让我知道,如果我所说的是含糊不清的,或者如果我可以提供任何更多的细节,我已经尝试。事先非常感谢 尝试将-p 8888:888添加到docker run命令中
docker run -p 8888:8888 -it b.gcr.io/tensorflow/tensorflow
在的评论中找到了解决方案
由于Docker通常需要在Docker主机系统上拥有与Docker容器(即部件)中相同的操作系统,因此您需要一个Linux虚拟机来运行Windows下基于Linux的Docker容器。Docker本身打开VM和容器之间的8888端口。您必须使用所述参数-p 8888:8888明确告诉它将端口从VM外部转发到open Docker容器端口
对于Ubuntu14.04,我必须使用下面的命令指定'/bin/bash',这样它才能进入交互式控制台。
docker-run-it gcr.io/tensorflow/tensorflow/bin/bash
哇,这真有效!非常感谢你!我很好奇为什么这个命令可以代替docker run-p8888:8888-it b.gcr.io/tensorflow/tensorflow检查这家伙的答案以获得澄清