第三种选择是使用已安装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。