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。

相关推荐
Lvan的前端笔记1 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
sbjdhjd6 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
帷幕落秋8 小时前
Docker的两种安装
运维·docker·容器
工业一体机老司机8 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
姜鱼问生12 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
人生百态,人生如梦13 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
程序员老赵13 小时前
Docker 部署 OpenViking:轻松搭建 AI Agent 上下文数据库平台
docker·开源·agent
吴声子夜歌14 小时前
Docker入门与实战——高级镜像构建
docker
坐看风云变幻15 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
零基础12315 小时前
Docker 部署实战:从入门到精通
docker·容器