首页 文章

我如何启动tensorflow docker jupyter notebook

提问于
浏览
48

我在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 .

9 回答

  • 17

    对于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")

    • 单击设置打开设置

    • 在网络设置中打开端口转发对话框

    • 单击符号以添加另一个端口,并通过填写如下所示的对话框将mac中的端口连接到VM . 在这个例子中,我选择了端口8810,因为我使用端口8888运行其他笔记本.
      enter image description here

    • 然后打开浏览器并连接到http://localhost:8810(或您在主机端口部分设置的任何端口

    • 让您的花式裤机学习应用程序!

  • 47

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

    TL; DR版本:

    • 打开 Docker Quickstart Terminal . 如果已经打开,请运行 $ cd

    • 运行 once$ 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 确保您在主目录中 .

    • 参数:

    • -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

    • -i 代表互动

    在 Cloud 上运行TensorFlow

  • 4

    在进一步阅读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"
    
  • 0

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

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

    • 运行Docker快速入门终端

    • 加载后,记下IP地址 . 如果你找不到它,请使用 docker-machine ip 并做一个说明 . 让我们称之为'ip address' . 看起来像这样:192.168.99.104(我编写了这个ip地址)

    • 在docker终端上粘贴此命令:

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

  • 1

    Jupyter现在准备好为TensorFlow运行Docker image

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

  • 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连接到它 . 我确定这会占用大量内存 .

    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 /

  • 10

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


    • 首先他运行长码头命令 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系统的文件夹 . 不要忘记在开头给出分区(例如"/c/") . 另外,他声明稍后可以从主机使用params -p获得端口 . 从所有这个命令中你得到这个容器执行的[CONTAINER_ID]!您始终可以通过在docker控制台中运行“docker ps”来查看当前正在运行的容器 . 上面创建的容器应该出现在此列表中,且ID相同 .

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

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

    • 就是这样!它像我这样跑向我!

  • 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
    

    您应该使用'vdocker'或将vdocker更改为'default' .

  • 4

    出于某种原因,我遇到了一个额外的问题,除了提供的示例之外我还需要克服这个问题,使用 --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 笔记本而不必这样做) .

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

相关问题