我如何启动 tensorflow docker jupyter notebook
How do I start tensorflow docker jupyter notebook
我已经在 ubuntu 机器上安装了 tensorflow docker 容器。 tensorflow docker setup instructions 指定:
docker run -it b.gcr.io/tensorflow/tensorflow
这使我进入 docker 容器终端,我可以 运行 python 并执行 Hello World 示例。我也可以手动 运行 .\run_jupyter.sh 来启动 jupyter notebook。但是,我无法从主机连接到笔记本。
如何启动 jupyter notebook 以便我可以从主机使用 notebook?理想情况下,我想使用 docker 启动容器并在单个命令中启动 jupyter。
进一步阅读 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 notebook。
更新:
在 windows 上用 docker 摔跤后,我用 docker 切换回 Ubuntu 机器。我的笔记本在 docker 会话之间被擦除,这在阅读更多 docker 文档后才有意义。这是一个更新的命令,它还在容器中安装了一个主机目录,并启动指向该安装目录的 jupyter。现在我的notebook已经保存在主机上了,下次启动tensorflow的时候就可以用了。
docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
对于 Linux 主持人 Robert Graves 的答案是有效的,但是对于 Mac OS X 或 Windows 还有更多工作要做,因为 docker 运行s 在虚拟 machine 中。
因此,要开始启动 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 虚拟机(我的已自动命名为 "default")
- 点击设置打开设置
- 在网络设置中打开端口转发对话框
- 单击 + 符号添加另一个端口,并通过填写对话框将端口从 mac 连接到 VM,如下所示。在此示例中,我选择了端口 8810,因为我 运行 其他笔记本使用端口 8888。
- 然后打开浏览器并连接到 http://localhost:8810(或您在主机端口部分设置的任何端口
- 做你喜欢的裤子machine 学习应用程序!
在 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 运行 -p 8888:8888 -p 6006:6006 -it b.gcr.io/tensorflow/tensorflow
4) 使用 http:/[ifconfig 地址]:8888/
连接到 Jupyter Workbench
如果您是使用 windows 机器的 docker 菜鸟,这些步骤对我有用。
版本:Windows8.1,docker1.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
。
如果您是 运行 这是第一次,它会下载并安装映像到这个轻量级虚拟机上。然后它应该说 'The Jupyter notebook is running at ....' -> 这是一个好兆头!
- 打开浏览器:
<your ip address (see above)>:8888
。例如。 192.168.99.104:8888/
- 希望您能看到您的 ipython 文件。
我简单而高效的工作流程:
TL;DR 版本:
- 打开Docker 快速启动终端。如果已经打开,运行
$ 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
If you are not on windows, you should probably change /$(pwd)
to $(pwd)
您将在您的主目录中获得一个名为 tensorflow
的空文件夹,用于永久存储项目文件,例如 Ipython 笔记本和数据集。
解释:
cd
用于确保您位于主目录中。
- 参数:
-it
代表interactive,可以在终端环境下与容器进行交互。
-v host_folder:container_folder
允许在主机和容器之间共享一个文件夹。主机文件夹应该在您的主目录中。 /$(pwd)
在Windows 10 中转换为//c/Users/YOUR_USER_DIR
。此文件夹在Ipython/Jupyter Notebook 使用的容器中被视为notebooks
目录。
--name tf
将名称 tf
分配给容器。
-p 8888:8888 -p 6006:6006
将容器端口映射到主机,第一对用于 Jupyter notebook,第二对用于 Tensorboard
-i
代表互动
为了稍微整理一下,我想给出一些额外的解释,因为我在使用 tensorflow 设置 docker 时也遇到了很多麻烦。为此,我参考了 this 视频,不幸的是,该视频在所有情况下都不是一目了然的。
我假设您已经安装了 docker。视频真正有趣的一般部分从 0:44 分钟开始,他终于开始了 docker。在那之前,他只将 tensorflow 存储库下载到文件夹中,然后将其安装到容器中。您当然可以将任何其他内容放入容器中,稍后在 docker VM 中访问它。
首先,他 运行 发出长 docker 命令 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 installation tutorial 中提供。如果容器在本地不可用,将由 docker 下载。
然后他给出了另外两种参数:他将主机系统的文件夹挂载到容器的给定路径。不要忘记在开头给出分区(例如“/c/”)。
此外,他还使用参数 -p 声明主机稍后可以使用端口。
从所有这些命令中,您可以获得此容器执行的 [CONTAINER_ID]!
您始终可以在 docker 控制台中通过 运行ning “docker ps” 查看当前 运行ning 容器。您在上面创建的容器应该以相同的 ID 出现在此列表中。
下一步:使用您的容器 运行ning,您现在想要在其中执行一些操作。在我们的例子中,jupyter notebook 或 tensorflow 或其他:要做到这一点,您需要 docker 在新创建的容器上执行 bash:docker exec –ti [CONTAINER_ID] bash
。此命令现在在您的容器上启动 bash shell。你看到这个是因为“$”现在变成了 root@[CONTAINER_ID]:。从这里没有回头路。如果你想回到 docker 终端,你必须启动另一个新的 docker 控制台,就像他在 1:10 分钟所做的那样。现在在容器中使用 bash shell 运行ning 你可以做任何你想做的事情并执行 Jupiter 或 tensorflow 或其他任何东西。您在 运行 命令中提供的主机系统文件夹现在应该在“/media/disk”下可用。
访问 VM 输出的最后一步。它仍然不想为我解决问题,我无法访问我的笔记本。您仍然需要找到正确的 IP 和端口才能访问已启动的笔记本、tensorboard 会话或其他任何内容。首先使用docker-machine –ls
找出主IP。在此列表中,您将获得 URL。 (如果它是您唯一的容器,则称为默认容器。)您可以省略此处给出的端口。然后从 docker ps
你得到转发端口的列表。当列表中写入 0.0.0.32776->6006/tcp 时,您可以使用首先给出的端口(Awkyard)从主机访问它。所以在我的例子中,容器中执行的张量板说“在端口 6006 上启动”。然后从我的主机我需要输入 http://192.168.99.100:32776/ 来访问它。
-> 就是这样!它运行对我来说是这样的!
它给你终端提示:
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'。
Jupyter 现在已经准备好 运行 Docker image 用于 TensorFlow:
docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook
出于某种原因,我 运行 遇到了一个额外的问题,我需要使用 --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
笔记本电脑而不必这样做)。
无论如何,上面的命令对我有用,可能对其他人有用。
作为官方 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.
我已经在 ubuntu 机器上安装了 tensorflow docker 容器。 tensorflow docker setup instructions 指定:
docker run -it b.gcr.io/tensorflow/tensorflow
这使我进入 docker 容器终端,我可以 运行 python 并执行 Hello World 示例。我也可以手动 运行 .\run_jupyter.sh 来启动 jupyter notebook。但是,我无法从主机连接到笔记本。
如何启动 jupyter notebook 以便我可以从主机使用 notebook?理想情况下,我想使用 docker 启动容器并在单个命令中启动 jupyter。
进一步阅读 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 notebook。
更新: 在 windows 上用 docker 摔跤后,我用 docker 切换回 Ubuntu 机器。我的笔记本在 docker 会话之间被擦除,这在阅读更多 docker 文档后才有意义。这是一个更新的命令,它还在容器中安装了一个主机目录,并启动指向该安装目录的 jupyter。现在我的notebook已经保存在主机上了,下次启动tensorflow的时候就可以用了。
docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
对于 Linux 主持人 Robert Graves 的答案是有效的,但是对于 Mac OS X 或 Windows 还有更多工作要做,因为 docker 运行s 在虚拟 machine 中。
因此,要开始启动 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 虚拟机(我的已自动命名为 "default")
- 点击设置打开设置
- 在网络设置中打开端口转发对话框
- 单击 + 符号添加另一个端口,并通过填写对话框将端口从 mac 连接到 VM,如下所示。在此示例中,我选择了端口 8810,因为我 运行 其他笔记本使用端口 8888。
- 然后打开浏览器并连接到 http://localhost:8810(或您在主机端口部分设置的任何端口
- 做你喜欢的裤子machine 学习应用程序!
在 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 运行 -p 8888:8888 -p 6006:6006 -it b.gcr.io/tensorflow/tensorflow
4) 使用 http:/[ifconfig 地址]:8888/
连接到 Jupyter Workbench如果您是使用 windows 机器的 docker 菜鸟,这些步骤对我有用。
版本:Windows8.1,docker1.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
。如果您是 运行 这是第一次,它会下载并安装映像到这个轻量级虚拟机上。然后它应该说 'The Jupyter notebook is running at ....' -> 这是一个好兆头!
- 打开浏览器:
<your ip address (see above)>:8888
。例如。 192.168.99.104:8888/ - 希望您能看到您的 ipython 文件。
我简单而高效的工作流程:
TL;DR 版本:
- 打开Docker 快速启动终端。如果已经打开,运行
$ 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
If you are not on windows, you should probably change
/$(pwd)
to$(pwd)
您将在您的主目录中获得一个名为 tensorflow
的空文件夹,用于永久存储项目文件,例如 Ipython 笔记本和数据集。
解释:
cd
用于确保您位于主目录中。- 参数:
-it
代表interactive,可以在终端环境下与容器进行交互。-v host_folder:container_folder
允许在主机和容器之间共享一个文件夹。主机文件夹应该在您的主目录中。/$(pwd)
在Windows 10 中转换为//c/Users/YOUR_USER_DIR
。此文件夹在Ipython/Jupyter Notebook 使用的容器中被视为notebooks
目录。--name tf
将名称tf
分配给容器。-p 8888:8888 -p 6006:6006
将容器端口映射到主机,第一对用于 Jupyter notebook,第二对用于 Tensorboard
-i
代表互动
为了稍微整理一下,我想给出一些额外的解释,因为我在使用 tensorflow 设置 docker 时也遇到了很多麻烦。为此,我参考了 this 视频,不幸的是,该视频在所有情况下都不是一目了然的。 我假设您已经安装了 docker。视频真正有趣的一般部分从 0:44 分钟开始,他终于开始了 docker。在那之前,他只将 tensorflow 存储库下载到文件夹中,然后将其安装到容器中。您当然可以将任何其他内容放入容器中,稍后在 docker VM 中访问它。
首先,他 运行 发出长 docker 命令
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 installation tutorial 中提供。如果容器在本地不可用,将由 docker 下载。 然后他给出了另外两种参数:他将主机系统的文件夹挂载到容器的给定路径。不要忘记在开头给出分区(例如“/c/”)。 此外,他还使用参数 -p 声明主机稍后可以使用端口。 从所有这些命令中,您可以获得此容器执行的 [CONTAINER_ID]! 您始终可以在 docker 控制台中通过 运行ning “docker ps” 查看当前 运行ning 容器。您在上面创建的容器应该以相同的 ID 出现在此列表中。下一步:使用您的容器 运行ning,您现在想要在其中执行一些操作。在我们的例子中,jupyter notebook 或 tensorflow 或其他:要做到这一点,您需要 docker 在新创建的容器上执行 bash:
docker exec –ti [CONTAINER_ID] bash
。此命令现在在您的容器上启动 bash shell。你看到这个是因为“$”现在变成了 root@[CONTAINER_ID]:。从这里没有回头路。如果你想回到 docker 终端,你必须启动另一个新的 docker 控制台,就像他在 1:10 分钟所做的那样。现在在容器中使用 bash shell 运行ning 你可以做任何你想做的事情并执行 Jupiter 或 tensorflow 或其他任何东西。您在 运行 命令中提供的主机系统文件夹现在应该在“/media/disk”下可用。访问 VM 输出的最后一步。它仍然不想为我解决问题,我无法访问我的笔记本。您仍然需要找到正确的 IP 和端口才能访问已启动的笔记本、tensorboard 会话或其他任何内容。首先使用
docker-machine –ls
找出主IP。在此列表中,您将获得 URL。 (如果它是您唯一的容器,则称为默认容器。)您可以省略此处给出的端口。然后从docker ps
你得到转发端口的列表。当列表中写入 0.0.0.32776->6006/tcp 时,您可以使用首先给出的端口(Awkyard)从主机访问它。所以在我的例子中,容器中执行的张量板说“在端口 6006 上启动”。然后从我的主机我需要输入 http://192.168.99.100:32776/ 来访问它。
-> 就是这样!它运行对我来说是这样的!
它给你终端提示:
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'。
Jupyter 现在已经准备好 运行 Docker image 用于 TensorFlow:
docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook
出于某种原因,我 运行 遇到了一个额外的问题,我需要使用 --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
笔记本电脑而不必这样做)。
无论如何,上面的命令对我有用,可能对其他人有用。
作为官方 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.