APP下载

Linux容器的发展历史及其未来趋势

消息来源:baojiabao.com 作者: 发布时间:2024-05-13

报价宝综合消息Linux容器的发展历史及其未来趋势

Linux容器是操作系统级虚拟化,在单个Linux主机上提供多个独立Linux环境的技术。与虚拟机器(VM)不同,容器不执行专用客户操作系统。相反,他们共享主机操作系统核心,并利用客户操作系统库提供所需的操作系统功能。由于没有专用操作系统,容器的启动速度比VM快得多。

容器使用Linux核心特性,例如名称空间、Apparmor、SELinux概要档案、chroot和CGroups来提供类似VM的隔离环境。Linux安全模组保证从容器访问主机和核心的许可权得到适当管理,以避免任何入侵活动。此外,如果容器可以在相同的CPU体系结构上执行,则容器可以从其主机操作系统执行不同的Linux发行版。

通常容器提供了基于各种Linux发行版建立容器映像的方法、用于管理容器生命周期的API、用于与API互动的客户端工具、获取快照的特性、将容器例项从一个容器主机迁移到另一个容器主机等。

容器历史

以下是从维基百科和其他来源提取的容器历史的简短摘要:

1979年-chroot

容器的概念早在1979年就开始使用UNIX chroot。这是一个UNIX操作系统系统呼叫,用于更改程序的根目录,并将其作为子档案到档案系统中的新位置,该位置仅对给定程序可见。此功能的想法是为每个程序提供隔离的磁盘空间。 1982年晚些时候,这被新增到BSD。

2000年-FreeBSD Jails

FreeBSD Jails是由Derrick T. Woolworth在2000年为R&D Associates for FreeBSD推出的早期容器技术之一。它是一个类似于chroot操作系统的系统呼叫,包括用于隔离档案系统、使用者、网络的其他程序沙盒功能。因此,它可以为每个Jails、自定义软件安装和配置等提供分配IP地址的方法。

2001年-Linux VServer

Linux VServer是另一种jail机制,可用于安全地分割槽计算机系统上的资源(档案系统,CPU时间,网络地址和内存)。每个分割槽称为安全上下文,其中的虚拟化系统称为虚拟专用服务器。

2004年-Solaris容器

Solaris Containers是针对x86和SPARC系统推出的,首次于2004年2月在Solaris 10的build 51 beta版中公开发布,随后在Solaris 10,2005的第一个完整版本中释出。Solaris Container是系统资源控制和边界的组合区域提供的分离。在单个操作系统例项中充当完全隔离的虚拟服务器。

2005年-OpenVZ

OpenVZ与Solaris Containers类似,并使用修补的Linux核心来提供虚拟化,隔离,资源管理和检查点。每个OpenVZ容器都有一个独立的档案系统,使用者和使用者组,程序树,网络,装置和IPC物件。

2006年-流程容器

Process Containers于2006年在Google实施,用于限制、统计和隔离程序集合的资源使用(CPU、内存、磁盘I/O、网络等)。后来,它被重新命名为控制组,以避免Linux核心上下文中“容器”一词的多重含义混淆,并合并到Linux核心2.6.24中。这显示了Google在集装箱技术上的早期参与,以及他们是如何做出贡献的。

2007年-控制组

如前所述,控制组AKA cgroup是由Google实现的,并于2007年新增到Linux核心中。

2008年-LXC

LXC代表Linux容器,它是Linux容器管理器的第一个、最完整的实现。它是使用cgroup和Linux名称空间实现的。LXC是在liblxc库中交付的,并为Python 3、Python 2、Lua、Go、Ruby和Haskell中的API提供了语言系结。与其他容器技术不同,LXC在Vanila Linux核心上工作,不需要任何补丁。今天LXC专案由佳能有限公司赞助。

2011年-守望者

Warden在2011年由CloudFoundry实施,在初始阶段使用LXC,后来又用自己的实现取而代之。与LXC不同,Warden并没有与Linux紧密结合。相反,它可以在任何可以提供隔离环境的操作系统上工作。它作为守护程式执行,并提供用于管理容器的API。

2013-lmctfy

lmctfy是Google容器堆叠的开源版本,提供Linux应用程序容器。Google启动了这个专案的目的是提供有保证的效能,高资源利用率,共享资源,容器的近零开销。今天Kubernetes使用的cAdvisor工具是由lmctfy专案启动的。 lmctfy的最初版本于2013年10月释出,2015年,Google决定向libcontainer提供核心lmctfy概念和抽象。结果现在LMCTFY没有进行积极的开发。

libcontainer专案最初由Docker启动,现在已经转移到Open Container Foundation。

2013年-Docker

截至2016年1月,Docker是最受欢迎和最广泛使用的容器管理系统。它是作为一个名为dotCloud的平台即服务公司的内部专案开发的,后来改名为Docker。与Warden类似,Docker在初始阶段也使用了LXC,后来用它自己的libcontainer库替换了LXC。与任何其他容器平台不同,Docker引入了用于管理容器的整个生态系统。这包括一个高效的分层容器映像模型,一个全域性和本地容器登录档,一个干净的REST API,一个CLI等。在稍后阶段,Docker还主动实现了一个名为Docker Swarm的容器丛集管理解决方案。

2014-Rocket

Rocket是一个与Docker非常相似的专案,用于修复他们在Docker中发现的一些缺陷。CoreOS提到,他们的目标是提供比Docker更严格的安全和生产要求。更重要的是,它是在AppContainer规范上实现的,是一个更加开放的标准。除了Rocket,CoreOS还开发了Docker和Kubernetes使用的其他几种与集装箱有关的产品。

2016-Windows容器

微软还主动在2015年为基于Windows的应用程序(称为Windows容器)向Microsoft Windows Server操作系统新增容器支援。这将与Microsoft Windows Server 2016一起释出。通过这种实现,Docker可以在Windows上本地执行Docker容器,而无需执行虚拟机器来执行Docker(早期的Docker使用Linux VM在Windows上执行)。

容器的未来

截至今天,业界有一个重要的趋势,即从VM迁移到容器以部署软件应用程序。其主要原因是与VM相比,容器提供的灵活性和低成本。Google多年来一直使用容器技术与Borg和Omega容器丛集管理平台大规模执行Google应用程序。更重要的是,Google通过实施cgroup和参与libcontainer专案为容器空间做出了贡献。在过去几年中,Google可能已经在使用容器的效能,资源利用率和整体效率方面获得了巨大的收益。最近,微软没有在Windows平台上进行操作系统级虚拟化,立即采取措施在Windows Server上实现对容器的本机支援。

在生产环境中,Docker、Rocket和其他容器平台不能在单个主机上执行,原因是它们暴露于单个故障点。当一个容器集合在单个主机上执行时,如果主机失败,在该主机上执行的所有容器也将失败。为了避免这种情况,需要使用容器主机丛集。解决这个问题的第一个是开放源代码的容器丛集管理平台之一:Apache Mesos。它最初是作为一个研究专案在加州大学伯克利分校开发的,后来在2012年左右转移到了阿帕奇(Apache)。Google采取了类似的步骤来实现一个先进的、开放源代码的容器丛集管理系统,名为Kubernetes。

微型服务是另一项突破性的技术,而不是一种使用容器进行部署的软件体系结构。微服务是一个Web服务的轻量级实现,与标准Web服务相比,它的启动速度非常快。这是通过在一个服务中打包一个功能单元并将其嵌入到一个轻量级的Web服务器二进位制档案中来实现的。

通过考虑上述事实,我们可以预测,在未来几年内,容器可能会完全取代虚拟机器!

来自公众号:云平台从0到1

2020-01-17 06:50:00

相关文章