我正在尝试在 Google Cloud 上的 Docker 上显示来自 TensorFlow 的 TensorBoard。
http://tensorflow.org/how_tos/summaries_and_tensorboard/index.md
tensorboard --logdir ./
我在 Google Cloud 上运行 Apache(它可能在我的第一个容器“ai-unicorn”中,Docker 制作了自己的容器“docker-playground”)。 我可以在 http://104.197.119.57/ 看到来自 Google Cloud 的默认页面.
我这样在 Google Cloud 上启动 TensorBoard:
root@6cf64fd299f0:/# tensorboard --logdir ./
在端口 6006 上启动 TensorBoard
(可以导航到http://localhost:6006)
我使用端口 6006 尝试了名为“在自定义端口上的浏览器窗口中打开”的 Google Cloud SSH 选项。
它显示: “我们无法连接到端口 6006 上的 VM。”
从 Google Cloud 查看 TensorBoard 的正确方法是什么?
最佳答案
作者 default , TensorBoard 为 127.0.0.1
上的请求提供服务,只有在同一台机器上运行的进程才能访问该请求。如果您使用 --host 0.0.0.0
启动 TensorBoard,它还将为远程接口(interface)上的请求提供服务,因此您应该能够远程连接到它:
$ tensorboard --logdir ./ --host 0.0.0.0
请注意,“在自定义端口上的浏览器窗口中打开”不会将您连接到 TensorBoard 服务器 - 此选项用于连接到非标准端口上的 SSH 服务器。 Google Cloud Platform docs了解如何从 VM 公开端口。您需要允许 TCP 端口 6006 上的连接才能远程访问您的 VM。您可能还需要从 Docker 容器中公开端口 6006,方法是遵循 instructions here .
编辑:添加了一些分步说明来帮助您进行 Docker 配置。这里有几个问题,无法判断哪一个失败了。
在启动 Docker 容器时配置端口转发:
(vm)$ docker run -p 0.0.0.0:7007:6006 -it b.gcr.io/tensorflow/tensorflow
这会将连接从 VM 上的端口 7007 转发到 Docker 容器中的 6006。 (其他值也是可能的。)
确保您可以从 Docker 容器内连接到 TensorBoard:
(container)$ tensorboard --logdir ./ --host 0.0.0.0 --port 6006 & (container)$ curl http://localhost:6006/
第二个命令应该打印一些 HTML 到控制台。
在 VM 上的 shell 中,确保您可以连接到容器中运行的 TensorBoard 实例:
(vm)$ curl http://localhost:7007/
该命令应将相同的 HTML 打印到控制台。
配置 Google Cloud 防火墙以允许您的本地客户端连接到 VM 上的端口 7007。
(client)$ gcloud compute firewall-rules create tensorboard --allow tcp:7007
您现在应该可以在客户端的网络浏览器中连接到 TensorBoard。
关于docker - 在 Google Cloud 上查看 Docker 上的 Tensorboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836728/