什么是 moby 运行时?

Tob*_*ayn 7 linux containers runtime docker moby

目前正在学习 docker 和容器化,我对“moby 运行时”这个术语感到有些困惑。

就我的理解而言,整个 docker 已拆分为多个库/工具/组件,允许开发人员使用 moby 运行时构建自己的 docker 版本。

这个假设正确吗?

如果我使用官方 docker 页面,moby 运行时和例如我在 Windows 机器上下载的桌面 docker 之间究竟有什么关系?

为什么例如 Microsoft 使用 moby 运行时来运行一些服务,例如 IoT Edge 而不是官方的 docker build?他们是否使用他们定制的 docker 版本?

atl*_*ine 10

是的,我认为你的不认同是正确的。

来自官方网站

Moby 是一个由 Docker 创建的开放框架,用于在不重新发明轮子的情况下组装专门的容器系统。它提供了一个由数十个标准组件组成的“乐高套装”,以及一个将它们组装成自定义平台的框架。Moby 的核心是一个用于组装专用容器系统的框架,它提供:组件、工具、组件。

它还说:

Moby 推荐给想要组装基于容器的系统的任何人:想要自定义或修补其 Docker 构建的黑客。

下图可能会让你更清楚:

在此处输入图片说明

由此你可以看到,你可以像 一样开始你自己的项目Docker CEDocker EE基于 moby 项目。而这里是一个很好的文章,我想解释清楚。也是来自官方人员对某些关系的回应。


BMi*_*tch 6

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

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

  2. 它是以前的 docker/docker 存储库名称,现在已移至 moby/moby。这是docker引擎的核心。

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

后者很可能是您想到的“Moby Runtime”。在 Windows 或 Mac 环境中运行 Linux 容器需要一个 VM(docker 容器依赖于许多不容易模拟的内核功能)。您甚至可以在LinuxKit 示例 中查看构建类似 VM 的示例。该 VM 内部是在 Linux 主机上本地安装的相同 Docker CE 引擎。而 VM 本身是由 Docker 构建和维护的。