全方位验证容器就是Linux

容器就是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

本文来自合作伙伴至顶网,了解相关信息可以关注至顶网。

时间: 2024-10-30 08:32:28

全方位验证容器就是Linux的相关文章

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置

2.2 容器式Linux系统的Docker配置 我们使应用程序容器化,不遗余力地使其变小和变高效,但如果最终要将这些容器部署到缓慢.臃肿的操作系统中,那将使一切努力失去意义.在不断演进的容器模型中,既然容器已包含运行应用程序所需的可执行文件.库以及其他组件,宿主操作系统完全可以简化到只保留运行容器所需的功能. Project Atomic和CoreOS这两个项目的目标是提供专为运行容器而优化的操作系统.这样的操作系统既能够直接运行在硬件上,也能运行在公有云(如亚马逊的EC2或者Google Co

如何在 Docker 容器中运行 Kali Linux 2.0

介绍 Kali Linux 是一个对于安全测试人员和白帽的一个知名操作系统.它带有大量安全相关的程序,这让它很容易用于渗透测试.最近,Kali Linux 2.0 发布了,它被认为是这个操作系统最重要的一次发布.另一方面,Docker 技术由于它的可扩展性和易用性让它变得很流行.Dokcer 让你非常容易地将你的程序带给你的用户.好消息是你可以通过 Docker 运行Kali Linux 了,让我们看看该怎么做 :) 在 Docker 中运行 Kali Linux 2.0 相关提示 如果你还没有

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——第2章 搭建容器运行时环境 2.1标准Linux系统的Docker配置

第2章 搭建容器运行时环境 自构建之初,Docker就运行在Linux之上.但与虚拟机不同,虚拟机包含了整个操作系统,而容器本身只是依靠单独的操作系统为其提供运行环境.这就是说,我们有诸多可选的方式来创建Docker的工作环境.具体方式包括以下这些. 标准Linux:多个主要的Linux发行版已将Docker打包在其中.如需最新的Docker特性,只要安装相应Linux发行版的最新版本即可.切记,Docker与操作系统有着密切的联系,因此,Linux的早期版本可能并不包含Docker运行所需的全

飞天专有云敏捷版2.0,容器引领新一代敏捷革命

10月12日,在2017年杭州•云栖大会上,阿里云正式发布了飞天专有云敏捷版2.0.飞天专有云敏捷版(简称敏捷版)是企业级容器应用平台,可以在用户自有数据中心的物理机和已有IaaS环境中部署.敏捷版包含从容器应用的构建到运行的全生命周期管理,并且提供开放的接口,为客户提供敏捷.弹性.开放的容器云平台.编排框架同时支持Docker Swarm和Kubernetes,用户可以根据需要选择Docker企业版或社区版容器引擎:另外提供了对Linux和Windows操作系统的支持.借助阿里云在公共云和专有

评估容器安全的现状,解你心中疑惑

任何理性的企业都希望能在容器上运行关键任务型服务,但他们会有这样的疑问:"容器真的安全吗?我们真的可以把数据和应用程序放心地交给容器吗?" 在技术人员当中,这常常导致容器与虚拟机之争,并讨论虚拟机中的虚拟机管理程序层提供的保护.虽然这可能是一种有趣而翔实的讨论,但容器与虚拟机这种对立本身就是错的:有关方应在虚拟机里面运行容器,目前这一幕出现在大多数云提供商身上.一个显著的例外是来自Joyent的Triton,它使用SmartOS Zones,确保租户相互隔离.还有一个日益壮大的社区认为

Windows 容器对比:WinDocks vs. Microsoft

本文讲的是Windows 容器对比:WinDocks vs. Microsoft[编者的话]介绍基于WinDocks的容器和Microsoft的容器之间的区别. WinDocks是在Windows系统层面上的具有独立端的Docker开源应用.作为前微软工程师,我们致力于改善软件开发人员的工作,在2016年3月我们开源了第一个基于Windows的Docker端.基于社区免费版我们培养了大量相关技术人员. 目前,微软发布了Windows Server 2016,并且支持Windows容器技术,那么许

一个存在三年的内核 bug 引发大量的容器系统出现网络故障

一个存在三年的内核 bug 引发大量的容器系统出现网络故障 最近发现的一个 Linux 内核 bug,会造成使用 veth 设备进行路由的容器(例如 Docker on IPv6.Kubernetes.Google Container Engine 和 Mesos)不检查 TCP 校验码checksum,这会造成应用在某些场合下,例如坏的网络设备,接收错误数据.这个 bug 可以在我们测试过的三年内的任何一个内核版本中发现. 这个问题的补丁已经被整合进核心代码,正在回迁入3.14之前的多个发行版

Linux内核bug引起Mesos、Kubernetes、Docker的TCP/IP数据包失效

本文讲的是Linux内核bug引起Mesos.Kubernetes.Docker的TCP/IP数据包失效,[编者的话]最近发现Linux内核bug,会造成使用veth设备进行路由的容器(例如Docker on IPv6.Kubernetes.Google Container Engine和Mesos)不检查TCP校验码(checksum),这会造成应用在某些场合下,例如坏的网络设备,接收错误数据.这个bug可以在三年前任何一个测试过的内核版本中发现.补丁已经被整合进核心代码,正在回迁入3.14之

NFV容器之路就在脚下?

本文讲的是NFV容器之路就在脚下?[编者的话]网络功能虚拟化(NFV)是开放网络能力的必经之路,目前主流的方式是通过OpenStack的编排能力实现NFV的快速自动化部署.随着容器技术的快速发展,容器编排能力也在飞速提升,通过容器实现NFV是大势所趋,但前进之路崎岖蜿蜒.路漫漫其修远兮,吾将上下而求索,各大厂商在NFV容器化之路上披荆斩棘,取得了不小的进展,这篇文章就是介绍Red Hat的NFV容器化相关的思考. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spri