在 Windows 上使用 Docker 启动 TensorFlow 失败

13

希望我没有遗漏任何事项。
我使用此指南在我的win 7上安装了docker。
我打开了一个新的终端并输入了以下命令:

docker run -it b.gcr.io/tensorflow/tensorflow

所有文件都已下载和解压缩,然后我收到以下信息:

[I 16:09:55.069 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret 
[W 16:09:55.122 NotebookApp] WARNING: The notebook server is listening on all IP
 addresses and not using encryption. This is not recommended. 
[W 16:09:55.122 NotebookApp] WARNING: The notebook server is listening on all IP
 addresses and not using authentication. This is highly insecure and not recommended.
[I 16:09:55.134 NotebookApp] Serving notebooks from local directory: /notebooks 
[I 16:09:55.134 NotebookApp] 0 active kernels
[I 16:09:55.134 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/ 
[I 16:09:55.134 NotebookApp] Use Control-C to stop this server and shut down all
 kernels (twice to skip confirmation). 

然后它就像这样卡住了,没有命令行,我无法输入任何东西...我错过了什么吗?


看起来不错。你的终端已经与容器“连接”上了。你可以使用-d开关将其变为守护进程:docker run -d -it b.gcr.io/tensorflow/tensorflow - AmazingDreams
尝试过了,虽然在这样做后它没有卡住,但当我打开Python并尝试写入'import tensorflow as tf'时,我收到了“没有名为tensorflow的模块”的错误... - mangate
这似乎与Docker无关,很抱歉我对Python了解不多。 - AmazingDreams
1
命令 docker run -d -it b.gcr.io/tensorflow/tensorflow 没有意义!你想在后台模式下运行容器 -d,同时使用带 tty 的交互模式 -it 运行它?你期望得到什么?能提供一个 Dockerfile 吗?试试运行: docker run -it --net=host b.gcr.io/tensorflow/tensorflow,或者更好的是, docker run -it --p 8888:8888 b.gcr.io/tensorflow/tensorflow 然后使用浏览器访问 http://host-ip:8888 (不要使用 localhost,除非使用 --net=host)。 - Auzias
2个回答

9

好的,我找到了一种类似答案,
有两种方法可以解决:
1)使用源代码安装tensorflow,这似乎可以解决问题。 可通过以下方式完成: docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
2)或者,在安装之前检查默认VM IP,如果使用常规安装。

docker-machine ip default

安装完成后,打开浏览器并访问 http://(default_ip):8888/

谢谢,太棒了!我不知道为什么tensorflow的二进制版本会卡住并且不会让你回到提示符,但开发版本确实可以。 - ProfVersaggi

9

我曾经遇到同样的问题,通过以下步骤解决了:

$ docker-machine ip default

记住这个DOCKER_IP值(复制到剪贴板),在我的情况下

192.168.99.100

现在启动您的 TensorFlow Docker 容器(带有端口转发):
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow

现在打开网络浏览器:
$ open http://localhost:8888

现在您应该看到带有jupyter主页的浏览器

我正在撰写更多关于TensorFlow入门的笔记,其中一些内容是针对OSX特定的

更新:我现在有了更好的理解,因此我正在更新答案 - Docker镜像会使某些端口可用(可以导出),但默认情况下在运行容器时不会将它们映射到主机的端口。

我们可以使用-p选项将它们映射到主机上。 我们指定应将已导出端口(如果有)映射到主机上的哪个主机端口(如果有)。

$ docker run -p $HOSTPORT:$CONTAINERPORT someimage

谢谢,您可以看到这是我建议的第二个选项,但是您的解释更加详细。 - mangate
1
我已经打开了浏览器,现在我该如何在这里编写tensorflow代码? - Daniel Paczuski Bak
请尝试在您的Docker容器中打开1_hello_tensorflow.ipynb笔记本,链接为:http://192.168.99.100:8888/notebooks/1_hello_tensorflow.ipynb - stujo
这对我不起作用。笔记本无法加载。只是“拒绝连接”。 - Lucidnonsense
在使用如上所述的-p选项后,尝试访问开放的http://localhost:8888。 - stujo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接