Moby 是容器生态的"乐高积木"式开源协作框架,Docker Engine 的上游代码库,2026 年 GitHub Stars 超 7.1 万,采用 Apache 2.0 许可,由 Docker 公司发起并开源、社区共同维护。
项目定位
- 本质:由 Docker 公司于 2017 年 4 月发起的开源项目,将原先高度耦合的 Docker Engine 代码深度解耦为数十个独立、职责单一的子组件,形成可自由组合的"容器系统组装工具箱"。
- 与 Docker 的关系:Moby 是 Docker Engine 的上游。Docker 每次发新版本,都会把改动推回 Moby;但 Moby 不只属于 Docker,其他项目同样可以以 Moby 为上游搭建自己的容器平台。
- 许可证:Apache License 2.0,可自由使用和分发(受美国出口管制法规约束)。
- 治理:走社区 best efforts 路线,不提供商业 SLA;需要企业级支持需选择 Docker Desktop 或 Mirantis Container Runtime。
核心设计原则
| 原则 | 说明 |
|---|---|
| 模块化 | 组件通过 API 协作,各自负责一块功能,想用什么就引入什么 |
| 自带配件但可替换 | 自带组件足够搭建完整容器系统,但随时可替换(如用 containerd 替代默认运行时) |
| 可用的安全性 | 默认配置即安全,不需额外加固 |
| 面向开发者 | API 设计目标是让开发者能基于它构建工具,而非终端用户产品 |
核心组件
| 组件 | 职责 |
|---|---|
| Container Runtime | 容器生命周期管理(创建、启动、停止、删除) |
| Image Management | 镜像分发、存储与分层管理 |
| libnetwork | 基于驱动的网络插件系统(bridge、overlay、macvlan 等) |
| Volume Management | 容器持久化存储 |
| BuildKit | 高级镜像构建引擎,支持并发构建、精确缓存、秘密注入、LLB 函数式构建模型 |
| Swarmkit | 集群编排能力(Docker Swarm 的核心) |
| containerd | 容器运行时(已独立为 CNCF 项目,是 Kubernetes 的事实标准运行时) |
| runc | OCI 运行时实现(同样已独立为 CNCF 项目) |
| distribution | 镜像分发协议实现(Registry 规范的基础) |
2026 年最新动态
- Docker Engine v29(2025 年 11 月):Containerd 镜像存储成为新安装默认选项(取代旧版图驱动);Moby 正式迁移至 Go modules(旧路径弃用);实验性支持 nftables 防火墙后端;最低 API 版本上调至 1.44。
- Go 模块路径变更:
github.com/docker/docker不再更新,新公开模块为github.com/docker/docker/client(API 客户端)和github.com/docker/docker/api(共享 API 类型),根模块仅产出二进制文件。 - v29.x 持续修复:2026 年持续发布安全更新(如 CVE-2026-34986、CVE-2026-34040 等),Go 运行时升级至 1.25.x。
- OCI 规范深度对齐:完整兼容 OCI Runtime Spec、OCI Image Spec,深度参与 OCI Distribution Spec 制定。
- CRI 适配层:通过抽象 Container Runtime Interface,使 Kubernetes 等编排系统可无缝对接 containerd、CRI-O、Podman 等多种 OCI 运行时。
生态格局
| 项目 | 与 Moby 的关系 |
|---|---|
| Docker | 基于 Moby 构建的商业+开源产品,面向终端用户 |
| containerd | 从 Moby 拆分,CNCF 项目,Kubernetes 默认运行时 |
| runc | 从 Moby 拆分,CNCF 项目,OCI 运行时参考实现 |
| BuildKit | Moby 子项目,独立演进,成为现代镜像构建事实标准 |
| Podman | 兼容 Docker CLI 的无守护进程容器工具,可复用 Moby API |
| Lima / Colima | 基于 Moby/containerd 的 Linux 虚拟机方案 |
| Mirantis | 承接 Docker EE 的企业级容器运行时 |
适合谁
- 需要定制容器平台(如厂商发行版、边缘计算设备)的工程师
- 想深入理解容器底层原理(namespace、cgroups、overlayfs)的开发者
- 基于 Moby 组件构建自有容器编排/管理平台的公司
- 容器安全研究人员(代码透明、可审计)
需要注意
- 不是终端产品:Moby 面向的是"构建容器工具的人",不是"使用容器的人"。普通用户直接用 Docker Desktop 即可。
- 无商业支持:社区 best efforts 模式,生产环境建议基于 Moby 构建的成熟发行版(如 Docker Engine、Podman 等)。
- Go 模块迁移成本:v29 涉及 breaking API 变更,升级前需仔细查阅 release notes。
- 安全更新节奏:Docker/Moby 定期发布安全补丁,生产环境需保持更新,关注 GitHub Security Advisories。