操作系统虚拟化是个伟大的工具,用来创建强大且隔离的多用户环境,而很多特定场景也带来了一些新的挑战:像Docker这样的容器技术,为运行在Linux上的操作系统级虚拟化平台增加了新层次的抽象和自动化。
想象一下,假如有一个常用的虚拟主机环境,在那个环境中,不得不在许多用户之间安全地分割物理资源,用户必须是分割的,且拥有他们自己的“虚拟空间”。
现在,为了管理这些用户和他们各自的资源,部署了一个强有力的工具,允许操作系统内核拥有彼此隔离和分割的多用户空间实例。这些用户空间实例, 也称 之为容器,使用户在容器中的操作,就像使用自己专用的服务器一样。对这些容器拥有***权限的管理员,可以围绕资源管理、操作系统中与其它容器的交互以及必 要的安全参数设置相应策略。同时,这个管理员也可以管理和监视这些容器,甚至为各个节点间的动态负载平衡设置自动策略。
操作系统虚拟化是个伟大的工具,用来创建强大且隔离的多用户环境。然而,在使用容器和操作系统虚拟化时,很多场景下也带来了一些新的挑战:
如果你有超大数量的容器,并且它们需要大量的虚拟机资源;
如果你需要更好的自动化和控制这些容器的部署和管理;
如何创建一个不仅仅能运行在Linux服务器上的容器平台?
在保证操作可行性的前提下,如何在公有云或私有云以及介于两者之间的任何地方部署一个解决方案?
在以上场景中,应用容器发挥了巨大的作用,我们来看一个非常具体的例子。像Docker这 样的技术,为运行在Linux上的操作系统级虚拟化平台增加了新层次的抽象和自动化。Docker使用cgroups来实现了新类型的隔离特性,允许隔离 的容器在它们自己的Linux实例上运行。当使用分布在多个不同节点的大量容器时,Docker可以帮助减少新启动一个虚拟机的额外开销。
了解这些以后,重要的是要知道,越来越多的组织正在部署构建在Linux服务器上的工作负载。这些工作负载正在运行大数据库、挖掘操作、大数据引擎等等各种作业。在这些Linux内核中,容器利用率也在增加,像Docker这样的平台可以通过以下方式对其进行协助:
更强的容器控制。应用容器帮助抽象操作系统级的虚拟化进程,这给予管理员对提供的服务进行更好地控制,以及更好的安全性和进程限制,甚至更多智能资源隔离。另一重要的方面是,允许跨越不同系统的容器共享资源,并控制它们的共享方式。
创建分布式系统。像Docker这样的平台允许管理员管理容器、他们的任务、运行的服务和其它横跨分布式、多节点和系统的进程。在一个大 系统中,Docker有个“source-on-demand”的环境,每个节点需要资源时都可以立即获得。因此,可以集成需要大规模和大量资源的系统, 比如MongoDB。有鉴于此,现在的大数据平台跨越不同的、高度分布的节点,这些节点位于公有云或服务供应商的私有数据中心。如何将你的容器与云进行集 成?
云集成和跨越集成。去年6月, 微软Azure开始支持Linux虚拟机上的Docker容器。使得广泛的Docker化的Linux应用生态系统运行在Linux云上。伴随着更多的云 利用率,使用Docker的容器系统也可以与Chief、Puppet、OpenStack和AWS进行集成。甚至 红帽最近宣布将assystemd、SELinux等先进的Linux工具并入Docker中。所有的这些工具允许你跨越自有的数据中心来扩展你的容器系 统。新功能允许你创建自有的混合云容器生态系统来扩展数据中心,例如 AWS。
Docker和其它开源项目继续抽象操作系统级的虚拟化,允许更好地对Linux的工作负载进行分布式处理。像Docker这样的技术围绕容器 管理 和自动化道路进行发展。实际上,微软意识到,很多环境中同时使用了Linux和Windows Server,因此,他们提供了跨越 Windows Server和Linux的开放解决方案。如果你正在使用一个运行在Linux服务器的基于容器的解决方案,该着手看看应用容器如何帮助 发展你的生态系统。