OS X的OS级虚拟化(容器)


30

我想知道为什么除了很好的旧chroot之外,对于Mac OS X 没有任何操作系统级虚拟化(或容器,如果愿意的话)的实现。

可能是由于内核限制或许可证限制引起的吗?还是根本没有人发起过类似的项目?

Answers:


13

容器化所需的关键要素是网络和其他服务的隔离,但不仅是隔离,还包括虚拟化。FreeBSD Jails,Linux“容器”(或更正确地说是“命名空间”)和Solaris / illumos区域都为这些操作系统系统服务提供了一定程度的“虚拟化”。

通过虚拟化,这意味着这些服务器对于“容器”内部的事物可用(或潜在地可用),但以保护容器外部同一主机上的其他事物为方式。(例如,一个容器可能具有自己的TCP / IP堆栈,其自己的IP地址,ARP缓存等)。

OS(操作系统)虚拟化是我们通常所说的“轻量级”虚拟化的一种方式,在这种虚拟化中,进程认为他们看到了一个虚拟内核,但是都在后台共享相同的真实内核。该内核充当一种虚拟机管理程序,可确保不跨越容器/虚拟化边界。(换句话说,将OS服务虚拟化。)将其与硬件虚拟化进行比较,其中虚拟化的是硬件-例如,设备在软件中进行仿真并呈现给容器中运行的操作系统。这是非常强大的功能,但是会占用大量资源-每个虚拟机必须具有自己的操作系统副本。

最近的macOS通过Hypervisor.framework提供了本机hypervisor支持,该软件允许“ XHyve”(FreeBSD的BHyve的端口)之类的软件(macOS上的docker使用此软件),但缺乏全面虚拟化操作系统服务所需的必要服务。

实际上,可能已经存在很多需要的东西,因为提供沙箱的工作意味着已经存在逻辑点,对于不同的应用程序,系统调用将被截取并以不同的方式处理。但是,这还远未达到完整的过程—实现真正的独立网络,IPC和其他名称空间需要大量工作。

苹果之所以没有这样做的最好原因,可能与苹果多年来没有发布适合在数据中心运行macOS的平台的原因相同-缺乏市场需求,或者苹果领导层认为缺乏市场需求。他们专注于台式机和移动设备的重点只是不需要那么多的虚拟macOS实例。(这很可悲,因为我很想拥有虚拟macOS支持-例如,与Linux容器相比,在Travis CI的VM上运行macOS确实很耗时)。


1
很好的答案...我猜苹果会避免在服务器上支持OSX,因为如果iOS开发人员可以运行便宜的功能强大的Linux笔记本电脑并在VPS托管提供商上编译apk,这将破坏MBP市场
Scott Stensland,

5

你会惊奇地发现-集装箱实际上支持-在OS X(和iOS)沙箱已经进化到使用它们。它们已在10.7中引入,现在实际上已在10.10和iOS 8中成为标准。在后者中,它们的执行更为严格(主要是由于应用程序安全性的原因),以至于应用程序只能看到自己,而以前枚举进程或资源的方法现在返回基于容器的结果-与Linux ipc名称空间类似-但功能更强大。


2
这些是沙箱,不是操作系统虚拟化(例如,容器,区域,监狱),对吗?
smdvlpr

1
Docker也不是虚拟化。容器!= VM​​。Docker基本上结合了许多不同的内核功能,cgroup,chroot,分层文件系统,iptables路由等,以隔离一组进程,以便应用程序将自身视为拥有系统,同时隔离这些环境以提高安全性并最大程度地减少了容器与系统之间相互干扰的能力。OSX容器可以实现其中一些功能,但不是全部。但是,它可能可以通过狡猾的编码器来实现。
Shayne

1
@Technologeeks,您可以指向OS X中容器/沙盒上的任何参考资料吗?
肯·威廉姆斯

3

我想答案是没有人真正想要它。这似乎是可行的。完成这些操作主要是出于一个目的,可以为VPS供应商节省性能。确实没有人希望VPS实例基于OSX。


5
感谢您的意见。恕我直言,容器至少还有另一个用例,即创建开发环境。顺便说一句,我也发现了这个古老的火焰:groups.google.com/forum
#!topic/darwin

增加密度是将进程隔离到其自己的名称空间中的一个很好的副作用。容器使您可以更安全地运行多个应用程序,并更好地控制它们在计算机上可以执行的操作。例如,iOS使用这些好处来增强安全性并防止应用程序相互踩踏,这与VPS密度无关。甚至单服务机也可以从安全性中受益。那里没有密度的提高,但是容器仍然有用。
GargantuChet

2

当它使用“好旧的chroot(8)”时,我启动了一个项目,该项目倾向于模仿Docker在OS X和NetBSD上的行为。它是免费的,可以在GitHub上使用。正如自述文件所述,该项目既不涉及安全性也不涉及生产,但将帮助在您的工作站上本地测试完整的堆栈。


0

泊坞窗(据我了解)仅是“虚拟化”(分层)文件系统和网络(仅限制cpu / mem),因此所有相同的功能都应该存在,但不能以相同的方式销售。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.