TensorFlow环境搭建之Docker Image

第三种选择是使用已安装TensorFlow 的Docker image。 Docker (https://www.docker.com/)有点像虚的拟机。但是不像虚拟机创建完全虚拟的操作系统,它只添加宿主机里没有的组件。首先你需要下载适合你的操作系统的 Docker。学习和下载它的好地方是 https://docs. docker.com/install/。

首先,在你的系统里安装 Docker。完成之后你就可以用下面的命令访问不同版本的 TensorFlow。你必须输入命令到命令行接口 (例如, Windows的cmd, Mac的终端,或Linux的shell):

docker pull TensorFlow/TensorFlow:<TAG>

你要用正确的文本代替 <TAG> (称为 tag),如 latest-py3,如果你想要最新最稳定的来自Python 3.5基于CPU的TensorFlow。你可以找到所有tag的更新列表 https://hub. docker.com/r/TensorFlow/TensorFlow/tags/.

本例中,你需要输入:

docker pull tensorflow/tensorflow:latest-py3

这个命令自动下载正确的镜像. Docker很高效,你可以要求它立即运行镜像。如果它在本地找不到,它会下载。你可以用下面的命令启动镜像:

docker run -it -p 8888:8888 tensorflow/tensorflow:latest-py3

如果你没有下载它,这个命令会下载最新版本的基于Python 3的TensorFlow并启动它。如果一切顺利你会看到下面的输出:

C:\Users\umber>docker run -it -p 8888:8888 tensorflow/ tensorflow:latest-py3

Unable to find image 'TensorFlow/TensorFlow:latest-py3' locally latest-py3: Pulling from TensorFlow/TensorFlow

18d680d61657: Already exists 0addb6fece63: Already exists 78e58219b215: Already exists eb6959a66df2: Already exists 3b57572cd8ae: Pull complete

56ffb7bbb1f1: Pull complete 1766f64e236d: Pull complete 983abc49e91e: Pull complete a6f427d2463d: Pull complete 1d2078adb47a: Pull complete f644ce975673: Pull complete a4eaf7b16108: Pull complete 8f591b09babe: Pull complete

Digest: sha256:1658b00f06cdf8316cd8a905391235dad4bf25a488f1ea98 9a98a9fe9ec0386e

Status: Downloaded newer image for TensorFlow/TensorFlow:latest-py3 [I 08:53:35.084 NotebookApp] Writing notebook server cookie secret to /root/.local/share/Jupyter/runtime/notebook_cookie_ secret

I 08:53:35.112 NotebookApp\] Serving notebooks from local directory: /notebooks \[I 08:53:35.112 NotebookApp\] The Jupyter Notebook is running at: \[I 08:53:35.112 NotebookApp\] http://(9a30b4f7646e or 127.0.0.1):8888/?token=f2ff836cccb1d688f4d9ad8c7ac3af80011f11ea 77edc425 \[I 08:53:35.112 NotebookApp\] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). \[C 08:53:35.113 NotebookApp

Copy/paste this URL into your browser when you connect for the first time, to login with a token:

http://(9a30b4f7646e or 127.0.0.1):8888/?token=f2ff836c ccb1d688f4d9ad8c7ac3af80011f11ea77edc425

到此你只要联接运行自Docker image的Jupyter服务器。

在所有的信息之后你会看到使用Jupyter Notebooks需要在浏览器里输入的 URL.你复制 URL,并用127.0.0.1代替 cbc82bb4e78c or 127.0.0.1 复制到浏览器的 URL字段。页面看起来如图1-19。

图 1-19. 使用Docker image Jupyter实例时你看到的窗口

重要的是要注意如果你在箱外使用 notebook,下一次启动Docker image时你创建的所有文件和 notebooks会消失。

注意 如果你使用 Jupyter notebook服务器,你创建新的文件和 notebooks,它们会在下一次启服务器时消失.你需要挂载本地目录以将文件保存在本地而不是在镜像里。

假如你使用Windows 设备且你的notebooks放在本地的 c:\python。 要从Docker image的Jupyter Notebooks找到并使用它们,你要启动 Docker实例使用 -v选项,按以下方法:

docker run -it -v c:/python:/notebooks/python -p 8888:8888 TensorFlow/TensorFlow:latest-py3

这样你可以看到c:\python的所有文件在Docker image的python目录里。你可以指明本地目录 (文件在本地)和Docker目录名(当你想用来自Docker image的 Jupyter Notebooks看这些文件时)使用 -v 选项:

-v <LOCAL FOLDER>:/notebooks/<DOCKER FOLDER>

在我们的例子里, <LOCAL FOLDER> 为 c:/python (你想将notebooks保存的目录)以及 <DOCKER FOLDER>是python (你想让 Docker挂载的有你的notebooks的目录)。一旦你运行这个代码,你会看到以下输出:

I 09:23:49.182 NotebookApp\] Writing notebook server cookie secret to /root/.local/share/Jupyter/runtime/notebook_cookie_ secret \[I 09:23:49.203 NotebookApp\] Serving notebooks from local directory: /notebooks \[I 09:23:49.203 NotebookApp\] The Jupyter Notebook is running at: \[I 09:23:49.203 NotebookApp\] http://(93d95a95358a or 127.0.0.1):8888/?token=d564b4b1e806c62560ef9e477bfad99245bf9670 52bebf68 \[I 09:23:49.203 NotebookApp\] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). \[C 09:23:49.204 NotebookApp

Copy/paste this URL into your browser when you connect for the first time, to log in with a token:

http://(93d95a95358a or 127.0.0.1):8888/?token=d564b4b1 e806c62560ef9e477bfad99245bf967052bebf68

现在你启动浏览器,使用最后给出的URL (你必须用127.0.0.1替代 93d95a95358a or 127.0.0.1),你会看到Python目录名为python,如图 1-20所示。

图1-20. 当你用正确的-v选项启动Docker image你应该看到的目录.在这个目录里,你可以看到保存在本 地的c:\python目录里的所有的文件.

你现在可以看到保存在本地的所有notebooks,当你在这个目录保存 notebook,你下次启动 Docker image时可以再次看到它。

最后一个提示,如果你有妆容的GPU,你可以直接下载最新的 GPU 版本TensorFlow,例如使用tag, latest-gpu.你可以找到更多的信息于https://www.TensorFlow.org/install/gpu

Docker Image 的优点和缺点

我们看一下这个选项的优点和缺点。

优点 :

  • 在本地你除了安装Docker不需要安装别的东西。
  • 安装过程简单。
  • 可以自动获得最新版本的TensorFlow。
  • 如果你要使用GPU版本的 TensorFlow最好选择它。

缺点 :

  • 你不能用这个方法开发多个环境使用多个版本的包。
  • 安装指定版本的包有点复杂。
  • 共享 notebooks比别的方法更复杂。
  • 代码的性能取决于运于 Docker image的硬件。

我应该使用哪个选项?

你可以启动一个选项,然后再选择另一个选项。你的代码可以继续工作。你要注意的是,如果你开发GPU支持的大量代码并运行于没有GPU的系统你可能需要大量修改代码。要确定选择哪一个选项我提供下面的问题和答案给你。

  • 你要处理敏感数据吗 ?

如果你要处理敏感数据 (例如,医学数据)不可以上传到云端,你应选择本的安装 Anaconda 或 Docker.你不能使用 Google Colab。

  • 你经常在没有网络的环境下工作吗 ?

如果你想写代码并训练模型而没有活动的网络联接 (例如在旅途中),你应选择安装 Anaconda 或 Docker,因为 Google Colab 需要有活动的网络联接。

  • 你需要多个人同进处理同一个 notebook ?

如果你需要与其它人共享你的工作或协同工作,最好选择 Google Colab,因为它有很好的共享经验,这是本地选项缺少的。

  • 你不想在你的电脑上安装任何东西吗 ?

如果你不想或者不能在你的电脑上安装任东西,你应该使用 Google Colab。你只需要网络联接和浏览器。记住有些特性只有 Google Chrome有而 Internet Explorer不具有。

注意 使用 tensorFlow最简单的方法可能是Google Colab因为它不用任何安装,直接在网上登入,然后开始写代码。如果你需要在本地工作, docker可能是最容易的方案,它直接构建并运行最新版本的 tensorFlow。如果你想要灵活的多个环境并严格控制包的版本你只能在本地安装python开发环境,如anaconda。

相关推荐
Riu_Peter4 小时前
【技术】记一次 Docker 中的 ES 数据迁移,使用 Reindex API
elasticsearch·docker·容器
计算机小手7 小时前
Docker 快速搭建一个基于 GPT-Vis 组件的统计图表生成服务
经验分享·docker·开源软件
谷新龙0017 小时前
神奇的bug之docker compose启动mysql失败
mysql·docker·bug
该用户已不存在9 小时前
8个Docker的最佳替代方案,重塑你的开发工作流
前端·后端·docker
(:满天星:)10 小时前
ELK技术栈全面解析与部署方案
linux·运维·服务器·elk·docker·centos
ViatorSun11 小时前
「解析」docker容器起服务,外部访问失败
linux·ubuntu·docker·容器·postman
yang_xiao_wu_11 小时前
docker
docker·容器·eureka
呼啦啦呼啦啦啦啦啦啦11 小时前
修改Docker容器内的时间(实践有效版)
运维·docker·容器
梦游钓鱼11 小时前
Ubuntu:20.04中安装docker
ubuntu·docker·eureka