我如何启动tensorflow泊坞窗jupyter笔记本

我已经在一台Ubuntu机器上安装了tensorflow docker容器。 tensorflowdocker设置指令指定:

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

这使我进入docker集装箱docker,我可以运行python并执行Hello World示例。 我也可以手动运行。\ run_jupyter.sh启动jupyter笔记本。 但是,我无法从主机到达笔记本。

如何启动jupyter笔记本电脑,以便我可以从主机使用笔记本电脑? 理想情况下,我想使用docker启动容器,并启动一个单一的命令jupyter。

对于Linux主机Robert Graves的答案是可行的,但是对于Mac OS X或Windows来说,由于docker在虚拟机中运行,还有更多的工作要做。

因此,要开始启动docker shell(或任何shell,如果您正在使用Linux)并运行以下命令以启动新的TensorFlow容器:

 docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh 

那么对于Mac OS X和Windows,您只需执行一次以下操作:

  1. 打开VirtualBox
  2. 点击docker vm(我的名字被自动命名为“default”)
  3. 点击设置打开设置
  4. 在networking设置中打开端口转发对话框
  5. 单击+符号添加另一个端口,并通过填写如下所示的对话框将端口从您的mac连接到VM。 在这个例子中,我select了端口8810,因为我使用端口8888运行其他笔记本。 在这里输入图像说明
  6. 然后打开浏览器并连接到http:// localhost:8810 (或者您在主机端口部分设置的任何端口
  7. 让你的花式裤子机器学习应用程序!

我简单而高效的工作stream程:

TL; DR版本:

  1. 打开Docker快速入门terminal 。 如果它已经打开,运行$ cd
  2. 运行一次$ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
  3. 每次启动: $ docker start -i tf

如果你不在windows上,你应该改变/$(pwd)$(pwd)

您将在您的主目录中获得一个名为tensorflow的空文件夹,用作项目文件(如Ipython笔记本和数据集)的持久性存储。

说明:

  1. cd确保你在你的主目录。
  2. PARAMS:
    • -it代表互动,所以你可以在terminal环境中与容器交互。
    • -v host_folder:container_folder启用在主机和容器之间共享文件夹。 主机文件夹应该在您的主目录中。 /$(pwd)转换为Windows 10中的//c/Users/YOUR_USER_DIR 。此文件夹被视为Ipython / Jupyter Notebook所使用的容器中的notebooks目录。
    • --name tf将名称--name tf分配给容器。
    • -p 8888:8888 -p 6006:6006将容器的端口映射到主机,第一对Jupyter笔记本,第二对Tensorboard
  3. -i代表互动

在云上运行TensorFlow

在进一步阅读Docker文档之后,我有一个适用于我的解决scheme:

 docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh 

-p 8888:8888和-p 6006:6006将容器端口暴露在同一端口号上的主机上。 如果您只使用-p 8888,则将分配主机上的随机端口。

./run_jupyter.sh告诉docker在容器中执行什么。

使用这个命令,我可以使用主机上的浏览器连接到http:// localhost:8888 /并访问jupyter笔记本。

更新:在与Windows上的docker工人摔跤后,我切换回与docker的Ubuntu机器。 我的笔记本正在docker会议之间被删除,这是阅读更多的docker文件后有意义。 这里是一个更新的命令,它也在容器中挂载一个主机目录,并启动jupyter指向挂载的目录。 现在我的笔记本保存在主机上,下次启动张量stream程。

 docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook" 

如果你是一个使用Windows机器的docker noob,那么这些步骤对我来说很有效。

版本:Windows 8.1,docker 1.10.3,tensorflow r0.7

  1. 运行Docker快速入门terminal
  2. 加载后,请记下ip地址。 如果你找不到它,使用这个docker-machine ip并做一个笔记。 让我们称之为'ip地址'。 将看起来像这样:192.168.99.104(我做了这个IP地址)
  3. 将这个命令粘贴在dockerterminal上:

    docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow

    如果你是第一次运行它,它会下载并安装在这个轻量级vm上的映像。 那么它应该说'Jupyter笔记本正在运行….' – >这是一个好兆头!

  4. 打开浏览器: <your ip address (see above)>:8888 。 例如。 192.168.99.104:8888/
  5. 希望你能看到你的ipython文件。

Jupyter现在已经准备好运行TensorFlow的Docker镜像了:

docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook

为了得到这个在超v下运行。 执行以下步骤:

1)使用https://blogs.msdn.microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/创builddocker虚拟机让你工作的docker集装箱。; 您可以通过控制台或通过ssh连接到它。 我至less放了8GB的内存,因为我确定这会占用大量的内存。

2)运行“ifconfig”来确定Docker虚拟机的IP地址

3)在docker shell提示符下键入:

docker运行-p 8888:8888 -p 6006:6006 -it b.gcr.io /tensorflow/tensorflow

4)使用http:/ [ifconfig地址]连接到Jupyter Workbench:8888 /

为了整理这些东西,我想给出一些额外的解释,因为我也经历了很多与张量stream设置docker。 为此,我提到这个video,不幸的是在所有情况下都不是自发的。 我假设你已经安装了docker。 video的真正有趣的一般部分从分钟0:44开始,他终于开始了docker工作。 直到那里他只将tensorflow回购下载到文件夹,然后他登上容器。 您当然可以将其他任何东西放入容器中,稍后在Docker虚拟机中访问它。


  1. 首先,他docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow命令docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow 。 “运行”命令启动容器。 在这种情况下,它将启动容器“b.gcr.io/tensorflow/tensorflow”,其地址在tensorflow docker安装教程中提供 。 如果不在本地可用,容器将由docker下载。 然后他给出了两个额外的参数:他在容器的给定path上安装主机系统的文件夹。 不要忘了在开始时给分区(例如“/ c /”)。 此外,他声明端口稍后可以从主机使用params -p。 从所有这个命令你得到这个容器执行的[CONTAINER_ID]! 您始终可以通过在泊坞窗控制台中运行“docker ps”来查看当前正在运行的容器。 上面创build的容器应该以相同的ID出现在这个列表中。


  2. 下一步:在你的容器运行的时候,你现在想要执行一些东西。 在我们的例子jupyter笔记本或tensorflow或任何:要做到这一点,你让docker执行在新创build的容器上的bash: docker exec –ti [CONTAINER_ID] bash 。 这个命令现在在你的容器上启动一个bash shell。 你看到这个是因为“$”现在已经变成root @ [CONTAINER_ID] :. 从这里是没有办法回来的。 如果你想回到dockerterminal,你必须在1点10分开始另一个新的docker控制台。 现在在容器中运行一个bash shell,你可以做任何你想要的,并执行Jupiter或者tensorflow或者其他任何东西。 运行命令中给出的主机系统的文件夹现在应在“/ media / disk”下提供。


  3. 最后一步访问VM输出。 它仍然不想为我工作,我无法访问我的笔记本电脑。 您仍然必须find正确的IP和端口来访问启动的笔记本,张量板会议或任何其他。 首先使用docker-machine –ls主IP。 在这个列表中你会得到这个URL。 (如果它是唯一的容器,则称为默认容器)。您可以将此处给出的端口废弃。 然后从docker ps得到转发的端口列表。 当列表中写入0.0.0.32776-> 6006 / tcp时,可以使用第一个地方给出的端口(Awkyard)从主机中访问它。 所以在我的情况下,在容器中执行tensorboard表示“启动港口6006”。 然后从我的主机,我需要inputhttp://192.168.99.100:32776/来访问它。

– >就是这样! 它为我这样跑!

它给你提示terminal:

 FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i docker run -it tensorflow/tensorflow:r0.9-devel 

要么

 FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel 

你应该有'vdocker'或更改vdocker'默认'。

出于某种原因,我碰到了一个额外的问题,我需要克服超出提供的例子,使用 – 的标志:

 nvidia-docker run --rm \ -p 8888:8888 -p 6006:6006 \ -v `pwd`:/root \ -it tensorflow/tensorflow:latest-devel-gpu-py3 sh -c "jupyter notebook --ip 0.0.0.0 ." 

然后我可以从我的机器通过http:// localhost:8888访问。 在某些方面这是有道理的; 在容器中你绑定到0.0.0.0表示所有可用的地址。 但是,我是否需要这样做似乎有所不同(例如我已经开始使用jupyter/scipy-notebook而不必这样做)。

无论如何,上面的命令对我来说很有用,可能对别人有用。