一、为什么我们需要 Docker
在当下的企业级系统——尤其是 AI 应用研发中——我们面对的早已不是「一个程序 + 一个数据库」这种简单的单体应用。一个典型的 AI 服务至少包含:
- 模型推理服务(GPU 推理框架 + 显存管理)
- 数据预处理与特征工程
- API 网关、限流、鉴权
- 向量数据库、关系型数据库、对象存储
- 异步任务队列(Celery / Ray)
- 前端展示
把这些组件拼装起来,部署到开发、测试、生产三套环境,传统的「虚拟机 + 手工配置」模式会遇到前所未有的挑战。
1.1 「在我机器上能跑」的噩梦
AI 应用依赖复杂的环境:特定版本的 Python、CUDA、PyTorch 或 TensorFlow,以及几十上百个第三方库。在开发、测试、生产环境之间手动同步这些依赖,几乎必然出错。
更糟的是:本地是 macOS + M1 芯片,CI 是 x86 Linux,生产又是带 A100 GPU 的服务器——同一份代码,三套二进制。
1.2 依赖地狱
同一个服务器上,项目 A 要求 TensorFlow 2.10,项目 B 要求 TensorFlow 2.15。在系统 Python 环境里安装两份几乎是不可能完成的任务。
1.3 部署与运维的复杂性
一个 AI 服务的镜像可能就有 10GB。怎么快速、可靠地把它分发到几十台机器?怎么在升级时不中断线上请求?
二、Docker 是什么
Docker 是解决上述所有问题的关键技术。它通过容器化(Containerization),把应用及其所有依赖打包到一个轻量、可移植、标准化的单元——容器(Container) 中。
容器与传统虚拟机的最大区别:容器共享宿主机操作系统内核,不虚拟化整个操作系统,因此启动是秒级、镜像只有几百 MB、可在一台物理机上跑上百个容器。
容器与进程的最大区别:容器有自己独立的文件系统、进程空间、网络栈,彼此隔离,应用层感觉不到自己在容器里跑。
三、学习 Docker 的好处
对一名 AI 应用架构师来说,掌握 Docker 意味着:
- 环境一致性与可复现性:从开发到生产,模型训练、微调、推理环境完全一致,彻底解决「环境差异」导致的玄学问题。
- 加速 DevOps / MLOps 流程:实现「一次构建,处处运行」,CI/CD 流水线里的「部署」环节从「登录机器敲命令」变成「拉镜像、起容器」。
- 资源隔离与高效利用:在同一台物理机上安全地跑多个 AI 服务互不干扰,最大化利用昂贵的 GPU。
- 微服务与可扩展架构的基石:把复杂的 AI 系统拆成独立、可扩展的服务单元(模型推理 / 数据预处理 / 特征服务),每个服务一个容器。
四、本系列的学习目标
读完本系列 5 篇文章,你将能够:
- 理解 Docker 的核心理念:镜像、容器、仓库、Dockerfile。
- 熟练使用 Docker 常用命令,管理容器的全生命周期。
- 读懂并编写
Dockerfile,把一个 AI 应用(FastAPI 模型服务)打包成标准镜像。 - 掌握 Docker 的数据持久化(Volume) 和网络通信机制。
- 使用 Docker Compose 编排多容器 AI 应用系统。
- 理解容器编排的演进史:Swarm → Compose → Kubernetes,知道何时该升级到 K8s。
五、给读者的建议
Docker 的学习门槛不高,但「会用」和「用好」之间有相当的距离。建议的路径是:
- 动手为先:本系列每一篇都附带可执行的命令,请务必在自己的机器上跑一遍。
- 从单容器到多容器:先学会
docker run,再学Dockerfile,最后学docker-compose.yml。 - 理解概念再背命令:镜像/容器/仓库是三个不同的东西,命令只是操作它们的手柄。
- 拥抱官方文档:Docker 的官方文档写得相当好,遇到问题先去查文档,再去 Google。
下一篇 《Docker 核心概念与安装:镜像、容器、仓库、Dockerfile》 我们将逐一拆解这四大核心概念,并完成你的第一次镜像构建。