Docker
探索 Docker 如何实现可复现的 AI 部署。学习在容器中封装 Ultralytics YOLO26 模型,以实现从云端到边缘设备的无缝扩展。
Docker 是一个开源平台,使开发人员能够通过容器化技术实现应用程序的自动化部署、扩展和管理。在人工智能和机器学习领域,Docker 充当了一个标准化的软件单元,将代码及其所有依赖项(如库、系统工具和设置)打包在一起,确保应用程序能从一个计算环境快速且可靠地运行到另一个计算环境。这消除了常见的“在我的机器上运行正常”的问题,确保在研究人员笔记本电脑上训练的 neural network 在部署到大型云服务器或边缘设备时表现完全一致。
Link to this section为什么 Docker 对 AI 和机器学习很重要#
现代 machine learning operations (MLOps) 严重依赖于可重复性和可移植性。AI 项目通常涉及复杂的软件栈,包括特定版本的 Python、用于 GPU acceleration 的 CUDA 驱动程序以及 PyTorch 或 TensorFlow 等深度学习框架。跨不同团队和基础设施手动管理这些内容极易出错。
Docker 通过创建轻量级的独立容器简化了这一过程。与需要为每个实例运行完整操作系统的传统虚拟机 (VMs) 不同,容器共享宿主机的 OS 内核,但在隔离的用户空间中运行。这使得它们在资源使用上效率更高,启动速度更快,这对于扩展 model serving 基础设施或运行分布式训练任务至关重要。
Link to this section实际应用#
Docker 在 AI 生命周期中无处不在,从最初的实验阶段到最终的部署阶段均有应用。
-
一致的训练环境: 数据科学团队可以使用 Docker 镜像来共享统一的开发环境。例如,从事 object detection 的研究人员可以拉取一个包含所有必要驱动程序和库的预构建镜像。这确保了当他们训练 YOLO26 模型时,无论底层硬件差异如何,同事们都能复现相同的训练结果。
-
边缘 AI 部署: 在 smart city surveillance 场景中,更新后的模型需要被推送到成千上万的边缘设备(如交通摄像头或无人机)上。Docker 容器允许工程师打包新模型版本并通过无线方式进行部署。由于容器包含推理运行环境,更新过程非常顺畅,且不会干扰设备的核心操作系统。
Link to this sectionDocker 与 Kubernetes 与虚拟机的区别#
为了理解 Docker 的特定角色,将其与相关技术区分开来会很有帮助:
- Docker 与虚拟机 (VMs): 虚拟机对硬件进行虚拟化,这意味着每个 VM 都在 hypervisor 之上运行完整的操作系统(如 Windows 或 Linux)。这会消耗大量的内存和 CPU。Docker 则是对操作系统进行虚拟化,使容器比虚拟机更小、更快捷。
- Docker 与 Kubernetes: 这两者是互补而非竞争的技术。Docker 是用于创建和运行单个容器的工具。Kubernetes 是一个容器编排平台,用于管理 Docker 容器集群,处理在大规模 cloud computing 环境中的自动扩展、负载均衡和自我修复等任务。
Link to this section示例:在容器中运行推理#
下面的示例演示了一个专为计算机视觉设计的 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.")Link to this section将 Docker 集成到你的工作流中#
为了开始使用容器化技术,开发人员通常会定义一个 Dockerfile,这是一个包含构建镜像所需所有命令的文本文档。构建完成后,这些镜像可以存储在像 Docker Hub 或提供 GPU 优化容器的 NVIDIA NGC Catalog 这样的注册表中。
对于那些希望简化训练和部署流程而无需手动管理 Dockerfiles 的用户,Ultralytics Platform 提供了集成工具来处理云环境的复杂性。这让你可以专注于提升 model accuracy,而不是配置基础设施。此外,你可以浏览我们的 Docker Quickstart Guide,学习如何立即在容器中运行 Ultralytics 模型。






