Docker
探索 Docker 如何实现可复现的 AI 部署。了解如何将 Ultralytics YOLO26 模型打包到容器中,实现从云端到边缘设备的无缝扩展。
Docker 是一个开源平台,支持开发者使用容器化技术自动执行应用程序的部署、扩展和管理。在人工智能和机器学习领域,Docker 充当一种标准化的软件单元,将代码及其所有依赖项(例如库、系统工具和设置)打包在一起,使应用程序能够在不同的计算环境之间快速、可靠地运行。这消除了常见的“在我的机器上能运行”问题,确保在研究人员笔记本电脑上训练的神经网络,部署到大型云服务器或边缘设备时,其行为完全一致。
Docker 对人工智能和机器学习的重要性#
现代机器学习运维 (MLOps)高度依赖可复现性和可移植性。一个 AI 项目通常涉及复杂的软件栈,包括特定版本的 Python、用于GPU 加速的 CUDA 驱动程序,以及 PyTorch 或 TensorFlow 等深度学习框架。在不同团队和基础设施之间手动管理这些组件很容易出错。
Docker 通过创建轻量级、独立的容器简化了这一过程。与传统的虚拟机 (VMs) 不同,传统虚拟机要求每个实例都配备完整的操作系统,而容器共享主机的操作系统内核,但在隔离的用户空间中运行。因此,容器的资源效率显著更高,启动速度也更快;在扩展模型服务基础设施或运行分布式训练任务时,这一点至关重要。
实际应用#
从初始实验到最终部署,Docker 广泛应用于 AI 生命周期的各个阶段。
-
一致的训练环境: 数据科学团队可以使用 Docker 镜像共享统一的开发环境。例如,开展目标检测工作的研究人员可以拉取一个预构建镜像,其中包含所有必需的驱动程序和库。这样,无论底层硬件有何差异,他们训练的 YOLO26 模型都能由同事复现相同的结果。
-
边缘 AI 部署: 在智慧城市监控中,需要将更新后的模型推送到数千台边缘设备,例如交通摄像头或无人机。Docker 容器允许工程师打包新版本的模型,并通过无线方式部署。由于容器包含推理运行时,更新过程能够无缝完成,不会干扰设备的核心操作系统。
Docker、Kubernetes 与虚拟机的比较#
要理解 Docker 的具体作用,最好将它与相关技术区分开来:
- Docker 与虚拟机 (VMs) 的比较: 虚拟机对硬件进行虚拟化,这意味着每台虚拟机都在虚拟机监控程序之上运行完整的操作系统(例如 Windows 或 Linux)。这会消耗大量内存和 CPU。Docker 对操作系统进行虚拟化,因此容器比虚拟机更小、启动速度更快。
- Docker 与 Kubernetes 的比较: 二者是互补技术,而不是竞争关系。Docker 用于创建和运行单个容器。Kubernetes 是一个容器编排平台,负责管理 Docker 容器集群,并在大规模云计算环境中处理自动扩缩容、负载均衡和自愈等任务。
示例:在容器中运行推理#
以下示例演示了用于计算机视觉的 Docker 容器中可能运行的 Python 脚本。该脚本使用 ultralytics 软件包加载模型并执行推理。容器环境可确保正确的依赖项(例如 opencv-python 和 torch)已预先安装。
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")将 Docker 集成到你的工作流中#
要开始使用容器化技术,开发者通常会定义一个 Dockerfile,这是一个包含构建镜像所需全部命令的文本文档。构建完成后,这些镜像可以存储在 Docker Hub 或 NVIDIA NGC Catalog 等镜像仓库中,后者提供经过 GPU 优化的容器。
如果你希望在不手动管理 Dockerfile 的情况下简化训练和部署流程,Ultralytics Platform 提供了能够处理云环境复杂性的集成工具。这样,你可以专注于提升模型精度,而不是配置基础设施。此外,你还可以参阅我们的 Docker 快速入门指南,了解如何立即在容器中运行 Ultralytics 模型。









