OCF 规范是否意味着 Docker 不再以 Linux 为中心?

Does the OCF spec mean that Docker is no longer Linux centric?

当我第一次听说微软 was working to run docker containers 时,它没有任何意义。

有一段时间似乎 Docker was Linux-centric, with its dependency on Linux Containers

现在看来Dockerhas switched from LXC to an implementation of the Open Containers Format (OCF) spec in runc.

我的问题是:OCF 规范是否意味着 Docker 不再以 Linux 为中心?(即这将如何工作?是否这意味着理论上也有能力在 OSX 上执行此操作?)

这里有几个兴趣点。

  1. 只能在支持 OS 虚拟化的平台上本地 支持容器。 OSX(到目前为止)没有这样的能力。所以它不能原生支持容器。您必须使用虚拟机。
  2. 标准化的容器格式并不意味着同一个容器能够运行在不同的平台上。容器和主机必须 运行 在同一个内核上。因此,特定容器只能 运行 在兼容平台上。
  3. 标准化容器格式规范的作用是使来自不同来源的更丰富的容器生态系统技术成为可能,因为标准容器格式,所有这些技术都能够互通。该技术仍需针对每个不同的主机平台实施。
  4. Docker 采用 OCF 并不一定意味着它将自动开始针对 Linux 以外的平台。这只是意味着它将在 Linux 上使用的容器格式将是 OCF 而不是它自己的专有格式。

Open Container Initiative 致力于制作容器格式和 运行time 可以 运行 在许多平台上,尽管很多概念和要求将基于linux 他们建立的基础。 OCF 容器仍然指定一个平台,因此不要指望能够在 Linux 主机上执行 Windows 容器。但期望能够以相同的方式和生态系统管理 Linux 和 Windows 以及 "Y" 容器。

Docker moved away from LXC a while ago, to using libcontainer which is still linux centric. runC is the next runtime 已经能够在 Linux 上 运行 当前 docker 容器,但旨在支持许多开放容器格式规范平台。

The goal of runC is to make standard containers available everywhere

Linux,显然,在过去 10 年中一直在构建 OS 功能来支持容器。 Microsoft 在 Windows 10 到 运行 容器中原生包含了很多 OS 组件,并在 docker 背后提供了支持。因此,预计 运行C 很快就会在 运行ning 上 Windows。

BSD 确实通过它的 Jails 设置支持很多功能,但从未像 Linux space 那样成熟,所以我相信它需要额外的 OS 支持,或 OSX 能够 运行 本机 OCF 容器。虽然最近的 FreeBSD 11 确实允许您通过它的 64bit Linux compatibility layer 运行 Docker 所以我猜 运行C 会接近做同样的事情,但可能会付出一些性能成本。

+1 到 Ziffusion。您可能想改写第 1 项),但基本上您在所有四点上都是正确的。

回答 OP 的问题:我不相信 OCF "deprecates" Linux。相反,我相信它 更好地支持 Linux 并且,同时 ,打开 Docker 功能更好也支持其他OS的。

具体来说:

https://www.opencontainers.org/faq

In the past two years, there has been rapid growth in both interest in and usage of container-based solutions. Almost all major IT vendors and cloud providers have announced container-based solutions, and there has been a proliferation of start-ups founded in this area as well. While the proliferation of ideas in this space is welcome, the promise of containers as a source of application portability requires the establishment of certain standards around format and runtime. While the rapid growth of the Docker project has served to make the Docker image format a de facto standard for many purposes, there is widespread interest in a single, open container specification, which is:

a) not bound to higher level constructs such as a particular client or orchestration stack,

b) not tightly associated with any particular commercial vendor or project, and

c) portable across a wide variety of operating systems, hardware, CPU architectures, public clouds, etc.

FAQ 进一步指出:

What are the values guiding the specification?

  • Composable. All tools for downloading, installing, and running containers should be well integrated, but independent and composable. Container formats and runtime should not be bound to clients, to higher level frameworks, etc.

  • Portable: The runtime standard should be usable across different hardware, operating systems, and cloud environments.

  • Open. The format and runtime should be well-specified and developed by a community. We want independent implementations of tools to be able to run the same container consistently. ...