运行预构建的机器学习镜像提供了一种实践 Docker 的方式。Docker 的主要优势之一是其在 Docker Hub 等镜像仓库上提供了这些镜像。这些镜像通常包含已安装常用机器学习框架和库的精心配置环境,这能节省大量配置时间并确保一致性。在这个动手练习中,我们将拉取并运行一个专为机器学习任务设计的流行预构建镜像。我们将使用一个包含 Jupyter Notebook 的官方 TensorFlow 镜像,它提供了一个随时可供实验的交互式环境。步骤 1: 拉取 TensorFlow 镜像首先,我们需要将镜像从 Docker Hub 下载到本地机器。打开终端或命令提示符,使用 docker pull 命令。我们将指定镜像名称和标签。标签通常指示版本或特定配置(例如 CPU 与 GPU,或包含开发工具)。docker pull tensorflow/tensorflow:latest-jupyter这个命令指示 Docker:连接到默认镜像仓库(Docker Hub)。找到名为 tensorflow/tensorflow 的仓库。下载标记为 latest-jupyter 的镜像。这个特定标签提供了一个最新的 TensorFlow 构建,以及一个随时可用的 Jupyter Notebook 服务器。你将看到 Docker 下载镜像层。所需时间取决于你的网络连接和镜像大小。步骤 2: 运行容器镜像下载完成后,我们可以使用 docker run 从中创建并启动一个容器。我们将使用几个选项:-it:以交互模式运行容器并分配一个伪终端,这允许我们与它交互。--rm:容器退出时自动移除它。这对于临时实验很有用。-p 8888:8888:将你的主机上的 8888 端口映射到容器内部的 8888 端口。这是 Jupyter Notebook 使用的默认端口。tensorflow/tensorflow:latest-jupyter:指定要使用的镜像。执行以下命令:docker run -it --rm -p 8888:8888 tensorflow/tensorflow:latest-jupyter步骤 3: 访问 Jupyter Notebook运行命令后,容器将启动,Jupyter Notebook 服务器将在其中启动。你将在终端中看到类似以下内容的输出(令牌将不同):[...] 要访问笔记本,请在浏览器中打开此文件: file:///root/.local/share/jupyter/runtime/nbserver-6-open.html 或复制并粘贴以下 URL 之一: http://127.0.0.1:8888/?token=a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4 or http://<container_hostname>:8888/?token=a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4 [...]复制包含 127.0.0.1 或 localhost 的 URL(包括 token 部分),并将其粘贴到你的网络浏览器中。你现在应该能看到 Jupyter Notebook 界面正在 Docker 容器内部运行。步骤 4: 与环境交互在 Jupyter 界面中:点击“New”并选择“Python 3”以启动新的笔记本。在第一个单元格中,尝试导入 TensorFlow 以验证它是否已安装:import tensorflow as tf print(tf.__version__)运行该单元格(Shift+Enter)。你应该会看到已安装的 TensorFlow 版本被打印出来。你现在拥有了一个功能齐全的 TensorFlow 环境,它在隔离容器中运行,通过浏览器即可访问,无需直接在你的主机上安装 Python、TensorFlow 或 Jupyter。步骤 5: 停止容器要停止 Jupyter 服务器和容器,返回到运行 docker run 命令的终端,按两次 Ctrl+C。因为我们使用了 --rm 标志,Docker 会在容器停止后自动移除它。如果你省略了 --rm,容器仍会处于停止状态。你可以使用 docker ps -a 列出它,并使用 docker rm <container_id_or_name> 手动移除它。查找其他镜像Docker Hub 托管着大量镜像集合。你可以直接在 Docker Hub 网站上搜索其他与机器学习相关的镜像。许多组织为他们的工具提供官方镜像(例如 pytorch/pytorch、nvidia/cuda)。还有社区贡献的各种数据科学堆栈镜像。选择镜像时,请注意发布者、下载量和最新更新,以评估其可靠性。这个练习展示了使用预构建 Docker 镜像的便利性。通过拉取现有镜像,你快速获得了一个标准化、即时可用的机器学习环境。这种使用预配置环境的能力大大节省时间,并有助于确保你和你的协作者使用相同的设置,从而减少常见的“在我的机器上能跑”的问题。在下一章中,我们将学习如何根据特定项目需求构建我们自己的自定义镜像。