容器就是Linux。这套过去二十年来对数据中心产生革命性影响的操作系统现在正在彻底改变我们在云中包装、部署和管理应用的方式。随着越来越多的组织机构认识到容器能够为他们管理应用和基础设施的方式带来许多优势,人们对容器技术的兴趣在不断增长。
说到底,容器是Linux的一个特性。十多年来,容器已经成为Linux操作系统的一部分,而这一切甚至可以追溯到UNIX时代。这就是为什么最近推出了Windows容器,但我们看到的大多数仍然是Linux容器。这也意味着如果你正在部署容器,你的Linux选择将至关重要。
在说容器就是Linux时,这到底这意味着什么,以及对您的重要性体现在哪里。
容器就是Linux
Linux容器只不过是在Linux上运行的进程。它与其他容器化的进程共享同一个主机内核。那么到底是什么东西让这一进程成为一个“容器”呢?
首先,通过使用内核命名空间,每个容器化的进程与运行在同一个Linux主机上的其他进程相隔离。内核命名空间提供一个虚拟化的世界,供容器进程在其中运行。例如,“PID”命名空间使得某个容器化的进程只能看到该容器内的其他进程,而不能看到该共享主机上的其他容器的进程。其他安全隔离功能还由诸如删除功能(dropped capability)、只读安装(read-only mount)和seccomp等内核功能来提供。SELinux在红帽企业版Linux等发行版中提供了额外的文件系统安全隔离。这种隔离有助于确保一个容器不能滥用其他容器或者攻破底层主机。
第二,通过使用Linux控制组(或“cgroup”),每个容器进程(内存、cpu、I/O等)所消耗的资源仅限于指定的范围内。这有助于消除嘈杂邻居的问题,防止某个容器过度使用Linux主机资源,而使其他容器得不到资源保证。
这种能力既隔离了容器化的进程,又限制了它们所消耗的资源,从而能够让多个应用容器更安全地运行在同一个共享的Linux主机上。隔离与资源限制相组合,使得一个Linux进程成为一个Linux容器。换句话说,容器就是Linux。下面我们来进一步探讨一下这句话的含义。
容器安全性就是Linux安全性
一旦了解了容器的工作原理,就容易理解“容器安全性就是Linux安全性”这句话。多个容器在同一个共享主机上安全运行的能力,其重要性不亚于内核在容器与底层主机操作系统之间提供多租户隔离的能力。这包括Linux内核命名空间以及其他安全功能,例如SELinux,其由内核及您所选择的Linux主机发行版来提供;同时也包括Linux发行版本身的安全性和可靠性。最终,这意味着,您的容器与其运行时所依赖的Linux主机同样安全。
另一个重要因素是确保容器中运行的内容是可信的。Docker开源项目为不可变容器镜像引入了一种分层封装格式,但用户仍然需要确保他们所运行的镜像是安全的。每个容器镜像由一个基本的Linux用户空间层以及依赖于应用的其他层组成。例如,对于红帽企业版Linux 7和红帽企业版Linux 6,红帽提供了基本镜像,同时还通过认证容器注册表,为各种语言runtimes、中间件、数据库等提供了大量的认证镜像。红帽聘请了大批工程师从已知的源代码中封装镜像内容,并努力确保这些内容不存在漏洞。红帽还提供安全监控功能,以便在检测到新问题时,能够获得修复程序并发布更新的容器镜像,进而使企业用户能够更新他们运行在这些容器上的应用。
容器性能就是Linux性能
我们还能很容易看到容器性能如何与Linux性能相关联。一个容器镜像就是一个用于对容器实例进行实例化的分层Linux文件系统。对所使用的Linux文件系统的选择 – OverlayFS、Device Mapper、BTRFS、AUFS等,可能会影响到有效地构建、存储和运行这些镜像的能力。性能以及这方面的相关问题通常会涉及到Linux主机文件系统的故障排除。
红帽公司已经在与云原生计算基金会(CNCF)合作,在OpenShift上大规模地测试Kubernetes上的容器部署。在我们最近的性能基准测试中,在一个由100台物理服务器组成的裸机集群上以及一个由2048台虚拟机组成的虚拟机集群上测试了容器。当您阅读这些测试结果时,您很快就能够发现容器性能与Linux性能之间有多么密切的关系。在红帽公司,依靠我们的Linux性能和规模工程团队的技能和经验,并与客户和社区开展合作,以确定大规模运行容器的最佳配置。
容器的可靠性就是Linux的可靠性
最终,如果企业为其生产应用采用了容器,他们当然需要知道他们的容器是否可靠地运行。无论是关于安全性、性能、可扩展性或是一般质量方面的问题,容器的可靠性总是与其运行的Linux发行版的可靠性,以及其背后的供应商有莫大的关系。容器代表了一种在Linux上封装及运行应用的新方法。红帽公司在支持商业机构和公共部门把Linux用于关键任务应用方面具有悠久历史。可靠性是红帽企业版Linux的标志,也是它能够成为企业中Linux事实上的标准的原因。这种可靠性也是红帽企业版Linux正在成为在企业环境中运行Linux容器标准的原因。
Docker到底是什么?
如果容器就是Linux,那么Docker又是什么呢?这取决于你所指的是什么。大多数人所知道的docker是2013年3月推出的开源软件项目,它可以在Linux上自动部署应用容器。Docker项目是过去几年最受欢迎的开源项目之一,docker/docker Github 知识库拥有超过1600名贡献者以及41,000颗星标。
Docker容器引擎管理着Linux内核命名空间、其他安全功能以及cgroup的配置,并为在容器内运行的内容引入了分层封装格式。这使得开发人员可以轻松地在本地计算机上运行容器,并创建出不可改变的镜像,以便在其他机器上以及在不同环境中一致地运行。这些容器的运行时不是docker,而是Linux。
随后推出了开放式容器计划(OCI),用于为容器格式(镜像规范)和运行时(运行时规范)创设开放的行业标准规范。在过去几年中,docker项目维护人员已经开始将较低层次的容器运行时管道作为独立的项目,其中包括OCI runC以及最近的containerd,后者被分拆出来并捐赠给CNCF。
Docker Inc.也是一家发起docker项目的私人公司,并出售同名的商业产品。Docker EE把docker容器引擎(包括runc和containerd)与额外的编排、管理和安全功能结合到一起。Docker Inc.的产品正在与越来越多的供应商相竞争,他们试图为构建、部署和管理容器提供“最佳组合”的解决方案。这些供应商既包括红帽这样的公司(提供的解决方案有OpenShift、红帽企业版Linux以及红帽企业Linux 原子主机等);也包括提供容器管理平台(CoreOS、Rancher、VMware等)的其他独立软件供应商;还包括主要的云供应商,例如Amazon、Microsoft Azure和Google,他们在公共云中提供托管容器服务。
容器供应商就是Linux供应商吗?
如果他们的核心容器用的是Linux,那是否就可以说这样的容器供应商就是Linux供应商呢?不一定。
Linux操作系统是运行容器化应用的基础系统,这涵盖内核、文件系统、网络,等等。容器提供了更快、更高效、更易于移植的抽象,可以跨越不同基础架构(包括物理服务器、虚拟化平台、私有云和公有云)在Linux上运行应用。
随着更多的容器部署投入生产,许多企业都在向红帽公司咨询如何从“自制”的容器解决方案转向受支持的容器平台。安全问题经常被认为是在生产中采用容器所面临的主要障碍之一。任何新技术都会遇到这个问题。您今天听到的有关容器的问题就是您在2000年代初期所听到的有关虚拟化的问题。当时,在谈到虚拟化的时候,许多IT管理人员就会说,“对开发有好处,但是我永远不会在生产中运行它!”但今天,许多企业都在生产中运行虚拟化,而且不仅仅是针对简单的应用程序,而是针对其最复杂、最关键任务的系统。这种认识上的演变也开始发生在容器上。
随着越来越多的企业为其任务关键型应用部署容器,他们需要向其容器平台供应商提出与Linux供应商相同的问题。在这两种情况下,相同的考虑因素和标准都适用:
- 这个供应商的平台是否可靠?
- 它有多安全?
- 它能够扩展吗?
- 最终,我可以信任它将其用于我最重要的应用吗?
您的容器平台供应商和您的Linux供应商其实是一样的。
为什么要选择红帽的容器?
红帽公司对容器的贡献可追溯到2000年代初期,当时创建了Linux命名空间和cGroup之类的核心容器原型。容器是红帽企业版Linux的多个主要版本中的一项核心功能,而且自红帽OpenShift于2011年首次发布以来一直是其基础。自2013年以来,红帽公司一直在为Docker开源项目做出贡献,目前已成为总体上的第二大贡献者。2013年9月,红帽公司作为首批主要公司之一,宣布将就docker项目开展合作,而且一直在与Docker Inc.以及众多其他供应商和个人贡献者合作,帮助该项目取得了今天的成就。
作为红帽企业版Linux 7和红帽企业版Linux原子主机的一部分,红帽公司封装并交付了docker 容器引擎项目的一个得到完全支持的二进制版本。这是OpenShift的基础。OpenShift提供了一个强大的生产级容器平台,其中还包括具有Kubernetes的容器编排以及其他应用生命周期管理功能、得到完全支持的运行时、中间件和数据库服务,还有集成的操作管理解决方案和开发人员工具。
红帽公司为容器生态系统的领先项目提供支持,并提供了一套综合性的容器平台产品。我们使客户能够利用其在Linux中的现有投资,并进一步发展它们以充分利用Linux容器的优势。我们利用Kubernetes的力量,让客户不仅能够在单个的服务器上运行单个的容器,而且能够跨越服务器集群运行复杂的多容器应用,还能够在他们数据中心或公共云中运行容器。我们通过添加多种功能,让他们的构建工作、持续的整合和持续的部署过程都能够自动进行并实现集成,让客户的应用以及客户的应用开发过程连接到一起。最后,我们提供多种运营管理功能来管理他们在公共云、私有云、虚拟化平台或物理基础架构上的容器平台。
在红帽,我们早就看到了容器的潜力以及对人们如何建造和运行容器进行标准化所具有的重要性。这就是为什么我们一直致力于成为上游容器社区和治理机构的领导者。最重要的是,红帽在过去15年作为Linux的领导者,赢得了极大的声誉,在客户中建立了良好的口碑。随着越来越多的客户从在Linux上运行应用转移到在Linux容器中运行应用,这些企业以及更多的企业将再次相信红帽将引领未来。
原文发布时间为:2016年12月15日
本文作者:作者:Joe Fernandes
本文来自合作伙伴至顶网,了解相关信息可以关注至顶网。