我如何启动tensorflow docker jupyter notebook

时间:2015-11-10 18:23:39

标签: docker jupyter tensorflow

我已经在ubuntu机器上安装了tensorflow docker容器。 tensorflow docker setup instructions指定:

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

这使我进入docker容器终端,我可以运行python并执行Hello World示例。我也可以手动运行。\ run_jupyter.sh来启动jupyter笔记本。但是,我无法从主机那里拿到笔记本电脑。

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

10 个答案:

答案 0 :(得分:47)

对于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(我自动命名为"默认")
  3. 点击设置
  4. 打开设置
  5. 在网络设置中打开端口转发对话框
  6. 单击+符号以添加另一个端口,并通过填写如下所示的对话框将mac中的端口连接到VM。在这个例子中,我选择了端口8810,因为我使用端口8888运行其他笔记本电脑。 enter image description here
  7. 然后打开浏览器并连接到http://localhost:8810(或您在主机端口部分设置的任何端口
  8. 制作你的花式裤机学习应用程序!

答案 1 :(得分:17)

我简单而有效的工作流程:

TL; DR版本:

  1. 打开 Docker快速入门终端。如果已经打开,请运行$ 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
  4.   

    如果您不在Windows上,则应该将/$(pwd)更改为$(pwd)

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

    说明:

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

答案 2 :(得分:10)

在进一步阅读docker documentation之后,我有一个适合我的解决方案:

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。现在我的笔记本保存在主机上,下次启动tensorflow时可用。

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

答案 3 :(得分:4)

如果你是一个使用Windows机器的整个docker noob,这些步骤对我有用。

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

  1. 运行Docker快速入门终端
  2. 加载后,请记下IP地址。如果您无法找到它,请使用此docker-machine ip并进行记录。让我们称之为“IP地址”。看起来像这样:192.168.99.104(我编写了这个ip地址)
  3. 将此命令粘贴到docker终端上:

    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文件。

答案 4 :(得分:4)

Jupyter现在准备为TensorFlow运行Docker image

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

答案 5 :(得分:2)

让它在hyper-v下运行。执行以下步骤:

1)使用https://blogs.msdn.microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/创建一个docker虚拟机,这将为您提供一个有效的docker容器。您可以通过控制台或通过ssh连接到它。因为我确信这将占用大量内存,所以我至少要存储8GB的内存。

2)运行“ifconfig”以确定Docker VM的IP地址

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

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

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

答案 6 :(得分:1)

为了整理一下这些东西,我想给出一些额外的解释,因为我也遭遇了很多设置有tensorflow的docker。为此我参考了this视频,遗憾的是,视频并非在所有情况下都是自我解决的。 我假设你已经安装了docker。视频中非常有趣的一般部分从0:44分钟开始,他终于开始使用码头工具。在那之前,他只将tensorflow repo下载到文件夹中,然后将其安装到容器中。您当然可以将任何其他内容放入容器中,稍后在docker VM中访问它。

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

  2. 下一步:在您的容器运行时,您现在想要在其中执行某些操作。在我们的例子中jupyter notebook或tensorflow或者其他:为此,你让docker在新创建的容器上执行bash:docker exec –ti [CONTAINER_ID] bash。此命令现在在容器上启动bash shell。你看到了这个,因为“$”现在改为root @ [CONTAINER_ID]:从这里回来是没办法的。如果你想回到码头终端,你必须像1:10那样开始另一个新的码头控制台。现在,在容器中运行bash shell,您可以执行任何操作,并执行Jupiter或tensorflow等等。您在运行命令中给出的主机系统文件夹现在应该在“/ media / disk”下可用。

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

  4. - &GT;就是这样!它像我一样跑向我!

答案 7 :(得分:0)

它为您提供终端提示:

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

你应该拥有&#39; vdocker&#39;或将vdocker更改为&#39;默认&#39;。

答案 8 :(得分:0)

出于某种原因,除了提供的示例之外,我还遇到了一个需要克服的问题,使用--ip标志:

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启动笔记本而不必这样做)。

在任何情况下,上述命令对我有用,可能对其他人有用。

答案 9 :(得分:0)

作为正式TensorFlow映像的替代方案,您还可以使用ML Workspace Docker映像。 ML Workspace是一个开源Web IDE,它将Jupyter,VS Code,TensorFlow和许多其他工具与库组合到一个方便的Docker映像中。部署单个工作区实例非常简单:

docker run -p 8080:8080 mltooling/ml-workspace:latest

所有工具都可以从同一端口访问,并集成到Jupyter UI中。您可以找到文档here