Moby:Docker 背后的容器引擎底座
Docker 的底层引擎,就是这个叫 Moby 的开源项目,GitHub 上累计 71,720 颗 Star。

Moby 是 Docker 公司发起的开源项目,定位是容器技术的"乐高积木"。它不是一个单独的工具,而是一整套组件的集合,包括容器构建工具、镜像仓库、编排工具、运行时等。开发者可以按需取用,拼装出自己的容器系统。

设计原则
Moby 的设计遵循几个明确的原则:
模块化:项目包含大量组件,每个组件都有明确的功能定义和 API 接口,彼此之间可以协作,也可以独立使用。
电池可换:Moby 自带的组件足以构建功能完整的容器系统,但它的模块化架构保证了大部分组件都可以被替换为其他实现。
安全可用:提供安全的默认配置,同时不牺牲易用性。
面向开发者:API 设计以功能和实用性为导向,目标用户是开发者而非终端用户。文档和交互设计也围绕开发者展开。
谁适合用 Moby
Moby 面向的是工程师、集成商和容器技术爱好者。适合那些想基于容器做二次开发、调试、实验、构建自有系统的人。它不是面向需要商业支持的用户的,而是面向想用开源代码工作和学习的人群。
和 Docker 的关系
Moby 里的组件和工具,最初就是 Docker 项目中的开源部分。Docker 承诺以 Moby 作为上游,同时也鼓励其他项目把 Moby 当上游来用,各种使用方式一视同仁。
需要注意的是,Moby 不是处理 Docker 产品问题的地方,它是贡献者写开源代码、修 bug、改进代码的地方。发布版本由维护者和社区以尽力而为的方式支持。需要企业级支持的用户,应该选择 Docker Desktop 或 Mirantis Container Runtime。
Go 模块变化
从 Docker v29(2025 年 11 月发布)开始,原来的 Go 模块路径 github.com/docker/docker 已经停用,不再更新。
现在可用的公开 Go 模块有两个:
github.com/moby/moby/client:Docker Engine API 的 Go 客户端github.com/moby/moby/api:客户端和服务端共享的 API 类型
根模块 github.com/moby/moby/v2 用于构建基于 Moby 的容器引擎(比如 Docker Engine),它只产出二进制文件,不适合作为 Go 库导入,也没有 API 稳定性保证。
如果你的代码还在用旧的 import 路径,需要手动替换:
- import "github.com/docker/docker/client"
+ import "github.com/moby/moby/client"
- import "github.com/docker/docker/api/types"
+ import "github.com/moby/moby/api/types"
v29 包含大量 breaking API 变更,包括 option 结构体、方法重命名、类型迁移等,具体可以参考 v29.0.0 的 release notes。
Moby 使用 Apache License 2.0 开源。
9.0.0 的 release notes。
Moby 使用 Apache License 2.0 开源。

4309

被折叠的 条评论
为什么被折叠?



