什么是 moby 运行时?

What is the moby runtime?

目前正在学习docker和容器化,对"moby runtime"这个词有些迷惑。

据我所知,整个 docker 已拆分为多个库/工具/组件,允许开发人员使用 moby 运行time 构建自己的 docker 版本。

这个假设是否正确?

moby 运行time 和 e.g. 之间究竟有什么关系?如果我使用官方 docker 页面,我会在我的 windows 机器上下载 docker 桌面版?

为什么Microsoft 使用 moby 运行time 来 运行 IoT Edge 等某些服务而不是官方 docker 构建?他们使用自己定制的 docker 版本吗?

是的,我认为你的理解是正确的。

来自official web site

Moby is an open framework created by Docker to assemble specialized container systems without reinventing the wheel. It provides a “lego set” of dozens of standard components and a framework for assembling them into custom platforms. At the core of Moby is a framework to assemble specialized container systems which provides: Components, Tools, Assemblies.

还说:

Moby IS RECOMMENDED for anyone who wants to assemble a container-based system: Hackers who want to customize or patch their Docker build.

下一个图可能会让你更清楚:

由此可见,您可以像Docker CEDocker EE一样在moby项目的基础上开始自己的项目。并且here is a good article I think explain it clearly. Also this来自官方小伙伴们对某种关系的回应。

Moby 是 Docker 中的一个过度使用的名称。除了作为他们的吉祥物之一的名字(Moby 是您经常在徽标中看到的蓝鲸)之外,Moby 是:

  1. Docker 已向社区提供的上游开源项目。这与 Docker 的闭源部分和带有 Docker 商标的部分分开。您可以在他们的 Github repositories 中看到这些项目。您可以像将 Fedora 视为 RedHat 的上游一样来考虑 Moby 项目,Docker 在 Moby 项目存储库中进行大部分开发,并从那里打包特定版本,名称为 Docker您看到的是 Docker CE 和 Docker EE。有些项目可能永远存在于此,但 Docker 也努力将这些项目进一步向上游移动,由外部组织管理,例如containerd 和 notary 都已转移到 Linux 基金会。

  2. 以前是docker/docker,现在移到moby/moby的版本库名称。这是docker引擎的核心。

  3. 是使用LinuxKit打包的虚拟机。此 VM 是 运行 docker 容器的最小环境,非常适合 运行 不想管理 VM 本身的桌面和嵌入式环境。

后者很可能就是您所想的 "Moby Runtime"。在 Windows 或 Mac 环境中 运行 Linux 容器需要一个虚拟机(docker 容器依赖于许多不容易实现的内核功能仿真)。您甚至可以在 LinuxKit examples 中看到构建类似 VM 的示例。该 VM 内部是 Linux 主机上本机安装的相同 Docker CE 引擎。 VM 本身由 Docker.

构建和维护