当我第一次听说微软正在努力运行 docker 容器时,它没有任何意义。
有一段时间,Docker 似乎是以 Linux 为中心的,它依赖于Linux Containers。
现在看来 Docker已经从 LXC 切换到了runc中的开放容器格式(OCF)规范的实现。
我的问题是:OCF 规范是否意味着 Docker 不再以 Linux 为中心?(也就是说,这将如何工作?这是否意味着在 OSX 上也存在这样做的理论能力?)
当我第一次听说微软正在努力运行 docker 容器时,它没有任何意义。
有一段时间,Docker 似乎是以 Linux 为中心的,它依赖于Linux Containers。
现在看来 Docker已经从 LXC 切换到了runc中的开放容器格式(OCF)规范的实现。
我的问题是:OCF 规范是否意味着 Docker 不再以 Linux 为中心?(也就是说,这将如何工作?这是否意味着在 OSX 上也存在这样做的理论能力?)
这里有几个有趣的地方。
+1 到 Ziffusion。您可能想改写第 1) 项,但基本上您在所有四点上都是正确的。
回答 OP 的问题:我不相信 OCF 会“弃用”Linux。相反,我相信它更好地支持Linux并且同时打开 Docker 功能以更好地支持其他操作系统。
具体来说:
https://www.opencontainers.org/faq
在过去的两年中,对基于容器的解决方案的兴趣和使用都出现了快速增长。几乎所有主要的 IT 供应商和云提供商都宣布了基于容器的解决方案,并且在该领域成立的初创公司也大量涌现。虽然这个领域的想法激增是受欢迎的,但容器作为应用程序可移植性来源的承诺需要围绕格式和运行时建立某些标准。虽然 Docker 项目的快速发展使 Docker 映像格式成为许多用途的事实上的标准,但人们对单一的、开放的容器规范产生了广泛的兴趣,即:
a) 不绑定到更高级别的结构,例如特定的客户端或编排堆栈,
b) 与任何特定的商业供应商或项目没有紧密联系,并且
c) 可跨多种操作系统、硬件、CPU 架构、公共云等进行移植。
常见问题解答进一步指出:
指导规范的价值观是什么?
可组合。所有用于下载、安装和运行容器的工具都应该很好地集成,但独立且可组合。容器格式和运行时不应绑定到客户端、更高级别的框架等。
可移植性:运行时标准应该可以跨不同的硬件、操作系统和云环境使用。
打开。格式和运行时应由社区明确指定和开发。我们希望工具的独立实现能够一致地运行相同的容器。...
Open Container Initiative致力于制作可以在许多平台上运行的容器格式和运行时,尽管许多概念和要求将基于它们所构建的 linux 基础。OCF 容器仍然指定一个平台,因此不要期望能够在 Linux 主机上执行 Windows 容器。但希望能够以相同的方式和生态系统管理 Linux 和 Windows 以及“Y”容器。
Docker不久前从 LXC 转移到使用仍然以 linux 为中心的 libcontainer。runC 是下一个已经能够在 Linux 上运行当前 docker 容器的运行时,但旨在支持许多平台上的 Open Container Format 规范。
runC 的目标是让标准容器随处可用
很明显,在过去的 10 年里,Linux 一直在构建操作系统功能来支持容器。微软在 Windows 10 中包含了许多操作系统组件来本地运行容器,并支持 docker。所以期待 runC 很快在 Windows 上运行。
BSD 确实通过它的 Jails 设置支持很多功能,但从未像 Linux 空间那样成熟,所以我相信它需要额外的操作系统支持,或者 OSX 能够本机运行 OCF 容器。尽管最近的 FreeBSD 11 确实允许您通过它的64 位 Linux 兼容层运行 Docker,但我猜 runC 将接近做同样的事情,但可能会有一些性能成本。