docker moby 安装教程
它是什么Moby 是 Docker 发起的开源容器化项目,提供组件库与装配框架,也是 Docker Engine 的上游。
Moby 是 Docker 发起的开源容器化项目,提供组件库与装配框架,也是 Docker Engine 的上游。本文梳理其核心功能、适用场景,以及通过发行版仓库、compose 插件与源码编译三条获取路径的具体步骤。
详细介绍
简介
Moby 是 Docker 发起的开源项目,提供一套容器化工具组件,也就是官方所说的“乐高积木”式组件库,以及把这些组件装配成定制化容器系统的框架。它要解决的是重复造轮子的问题:不必从零编写容器引擎,就能组合出符合自身需求的容器系统。适合希望裁剪、定制或自行编译容器引擎的开发者与运维人员,也适合想了解 Docker Engine 上游实现的学习者。核心优势在于组件可拆可换、装配过程透明,组件库、装配框架与社区讨论都集中在同一个项目下。
核心功能
- 提供一套容器化工具组件库,官方称之为“乐高积木”式的工具箱组件,可按需取用其中任意一块。
- 提供装配框架,把零散组件组合成一套定制化的、基于容器的系统,避免重复造轮子。
- 包含 Docker 的完整核心功能:在 Alibaba Cloud Linux 4 中,系统默认通过 Moby 包提供容器引擎能力,命令与服务名仍为 docker、dockerd。
- 是 Docker Engine 的开源上游项目,openEuler 仓库维护的容器引擎就来自这条上游链路。
- 源码分两处产出:github.com/moby/moby 编译出 dockerd,github.com/docker/cli 编译出 docker 命令。
- 同时是容器爱好者试验与交流想法的场所,组件、框架与讨论都归在同一个项目下。
- 曾是 Windows 系统内运行 Linux 容器的默认方式,相关讨论在 GitHub 与 Reddit 上都能查到。
使用场景
- 服务器需要容器引擎、而发行版仓库已提供 Moby 包时,直接用系统包管理器获取,例如 Alibaba Cloud Linux 4 默认通过 Moby 包提供容器引擎能力。
- 使用 openEuler 并希望由发行版仓库维护容器引擎时,取 Moby 后再补上 docker compose 插件。
- 需要裁剪容器系统、只保留所需组件的团队,用装配框架把组件拼成定制系统。
- 想了解 Docker Engine 内部实现或自行产出 dockerd 的开发者,直接从 moby 仓库着手编译。
- Fedora 用户在默认仓库的 docker 包与 moby-engine 包之间做取舍时,可先对比两者的说明再决定。
- 一次性测试环境想快速跑起容器能力时,配置 Docker 官方源后用包管理器,或直接运行官方脚本 get.docker.com。
安装与获取步骤
- 先确认发行版与仓库:不同 Linux 发行版的获取方式不同,先查本机仓库是否提供 Moby 相关包(Alibaba Cloud Linux 4 默认通过 Moby 包提供容器引擎能力,Fedora 仓库有 moby-engine 包,openEuler 仓库维护 Moby)。
- 用发行版自带的包管理器从仓库取对应包,完成后系统应提供 docker 命令与 dockerd 服务名,用这两项判断是否就绪。
- 需要多服务编排时补上 docker compose 插件;openEuler 的做法是先取 Moby 再补插件,插件不会自动出现。
- 走源码路线:从 https://github.com/moby/moby 编译出 dockerd,从 https://github.com/docker/cli 编译出 docker 命令,两个仓库分别产出两部分。
- 只做一次性测试时,可配置 Docker 官方源后用包管理器,或直接运行官方脚本 https://get.docker.com,后者是最便捷的选择。
- 部署具体应用前确认依赖:例如 Weblate 的容器化部署把所有依赖包含在内,默认数据库为 PostgreSQL、缓存后端为 Valkey,几秒即可启动一个实例。
与 Docker CE 的区别
Docker CE 是面向用户的容器引擎发行版本,Moby 则是它背后的开源上游项目。社区资料指出:通过 github.com/moby/moby 可以编译出 dockerd,通过 github.com/docker/cli 可以编译出 docker 命令。Moby 项目由 Docker 公司所有,公司也在各处复用其中的代码片段。
命名上仍有争议,GitHub 上有 issue 直接提出把 moby 改回 docker,理由是这次改名带来困惑、对生态贡献有限。查阅结论与对照文档时以官方页面为准。
源码编译与版本对照
源码路线没有统一的“分支即版本”对应关系。Stack Overflow 上有人在 Docker/Moby 发布 17.06 CE 时提出疑问:仓库里并没有 17.06 分支,不清楚这一版究竟如何用 Moby 装配出来。因此在对照某个具体发行版本时,先在仓库与官方页面确认对应关系,再动手编译。
注意事项
- Moby 项目由 Docker 公司所有,改名与定位在社区仍有争议,引用结论前以官方页面为准。
- 不同发行版的包名不一致(Moby、moby-engine 等),升级、依赖关系与服务名以各自仓库说明为准。
- 换用 Moby 前先确认机器上是否已有容器引擎,避免 docker 命令与 dockerd 服务名冲突。
- compose 插件需单独补充,默认不会随容器引擎一起出现,缺插件时命令会提示找不到。
- 官方脚本 get.docker.com 面向一次性测试环境,长期运行的机器按发行版仓库流程操作更稳妥。
- 源码编译的依赖与构建环境需自行准备,仓库未给出统一参数表,具体以官方页面为准。
更新记录
最近更新:2026-10-05
软件参数速览
常见问题
Moby 和 Docker 到底是什么关系?
Moby 是 Docker 发起的开源项目,也是 Docker Engine 的上游项目。openEuler 文档说明 Moby 包含 Docker 的完整核心功能,用仓库里的 Moby 包即可提供容器引擎,命令与服务名仍是 docker、dockerd。
系统里该选 moby-engine 包还是 docker 包?
Fedora 默认仓库同时提供 docker 包与 moby-engine 包,两者都能给出容器引擎能力。差异与取舍以发行版仓库说明和官方页面为准,切换前先确认现有容器数据与服务名是否受影响。
取了 Moby 之后 docker compose 用不了怎么办?
openEuler 的做法是先取 Moby,再补上 docker compose 插件。插件不会随容器引擎自动出现,缺插件时命令会提示找不到,按发行版仓库补插件即可。
想自己编译 dockerd,应该从哪个仓库开始?
从 https://github.com/moby/moby 编译出 dockerd,从 https://github.com/docker/cli 编译出 docker 命令。这是两个独立仓库,分别对应引擎与命令行,需要分别处理。
能用 Moby 直接对应到 17.06 CE 这样的发行版本吗?
Stack Overflow 上有人提出同样疑问:Docker/Moby 发布 17.06 CE 时,仓库里并没有 17.06 分支,具体如何装配并不清楚,这类对应关系需以官方页面为准。
只想在一次性测试环境跑起来,最快的方式是什么?
配置 Docker 官方源后用包管理器,或直接运行官方脚本 get.docker.com。后者是最便捷的选择,但官方实践建议只在一次性测试环境使用它。
用容器跑应用和获取容器引擎是一回事吗?
不是。Weblate 等应用提供容器化部署方式,几秒即可启动,依赖内置、默认数据库 PostgreSQL、缓存后端 Valkey;这属于在容器引擎之上跑应用,与获取容器引擎是两步。
Windows 上跑 Linux 容器和 Moby 有关系吗?
社区讨论提到 Moby 曾是 Windows 系统内运行 Linux 容器的默认方式,相关讨论可在 GitHub 与 Reddit 找到;具体支持范围与当前状态以官方页面为准。