Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在Docker中运行TensorFlow时难以访问Jupyter笔记本_Windows_Powershell_Docker_Machine Learning_Tensorflow - Fatal编程技术网

Windows 在Docker中运行TensorFlow时难以访问Jupyter笔记本

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示例。我还能够用这个命令成功地运

我的问题:

这里是ML领域的新手。我目前正试图通过docker设置tensorflow,但一旦tensorflow开始运行,我就很难使用jupyter笔记本。作为将来的参考,我将使用Windows10、powershell、Python2.7和oracle virtualbox(v.5.0.16)

我非常自信docker能够正常工作,因为我已经完成了他们的安装教程(“从Powershell使用docker”),没有任何问题——我能够在那里运行hello world示例。我还能够用这个命令成功地运行ubuntu终端

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容器的命令时,我得到错误:

    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..
    
    我还按照他们的建议使用virtualbox更改了端口设置,这似乎也没有什么不同

  • 当我使用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
    
    >>将tensorflow作为tf导入
    回溯(最近一次呼叫最后一次):
    文件“”,第1行,在
    ImportError:没有名为tensorflow的模块
    
    我不知道如果不先运行jupyter,这是否可能,但我认为值得一试。这个问题可能与这篇文章的主题无关,但如果有人知道为什么会这样,那也会很有帮助


我感谢所有提供的帮助。请让我知道,如果我所说的是含糊不清的,或者如果我可以提供任何更多的细节,我已经尝试。事先非常感谢

尝试将-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检查这家伙的答案以获得澄清