8

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

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

这个假设正确吗?

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

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

4

2 回答 2

12

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

来自官方网站

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

它还说:

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

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

在此处输入图像描述

从这里你可以看到,你可以开始你自己的项目,就像Docker CEDocker EE基于 moby 项目。这是一篇很好的文章我认为可以清楚地解释它。也是官方人士对某些关系的回应。

于 2019-07-04T12:22:34.373 回答
6

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

  1. Docker 提供给社区的上游开源项目。这使得 Docker 的封闭源代码部分和带有 Docker 商标的部分分离。您可以在他们的Github 存储库中看到这些项目。您可以像将 Fedora 视为 RedHat 的上游一样看待 Moby 项目,Docker 在 Moby 项目 repos 中进行大部分开发,并从那里使用 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 示例中查看构建类似 VM 的示例。该虚拟机内部是本地安装在 Linux 主机上的同一个 Docker CE 引擎。VM 本身是由 Docker 构建和维护的。

于 2019-07-04T13:52:51.707 回答