我如何启动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,您只需执行一次以下操作:
- 打开VirtualBox
- 点击docker vm(我的名字被自动命名为“default”)
- 点击设置打开设置
- 在networking设置中打开端口转发对话框
- 单击+符号添加另一个端口,并通过填写如下所示的对话框将端口从您的mac连接到VM。 在这个例子中,我select了端口8810,因为我使用端口8888运行其他笔记本。
- 然后打开浏览器并连接到http:// localhost:8810 (或者您在主机端口部分设置的任何端口
- 让你的花式裤子机器学习应用程序!
我简单而高效的工作stream程:
TL; DR版本:
- 打开Docker快速入门terminal 。 如果它已经打开,运行
$ cd
- 运行一次 :
$ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
- 每次启动:
$ docker start -i tf
如果你不在windows上,你应该改变
/$(pwd)
为$(pwd)
您将在您的主目录中获得一个名为tensorflow
的空文件夹,用作项目文件(如Ipython笔记本和数据集)的持久性存储。
说明:
-
cd
确保你在你的主目录。 - 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
-
-
-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
- 运行Docker快速入门terminal
- 加载后,请记下ip地址。 如果你找不到它,使用这个
docker-machine ip
并做一个笔记。 让我们称之为'ip地址'。 将看起来像这样:192.168.99.104(我做了这个IP地址) -
将这个命令粘贴在dockerterminal上:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow
。如果你是第一次运行它,它会下载并安装在这个轻量级vm上的映像。 那么它应该说'Jupyter笔记本正在运行….' – >这是一个好兆头!
- 打开浏览器:
<your ip address (see above)>:8888
。 例如。 192.168.99.104:8888/ - 希望你能看到你的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虚拟机中访问它。
-
首先,他
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出现在这个列表中。
-
下一步:在你的容器运行的时候,你现在想要执行一些东西。 在我们的例子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”下提供。
-
最后一步访问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
而不必这样做)。
无论如何,上面的命令对我来说很有用,可能对别人有用。