探讨容器化技术的历史、利用这种技术的收益和优势,以及该技术与虚拟化的关系。
容器化 是将软件代码与 操作系统 (OS)库和 依赖项 所需的运行代码打包在一起,以创建一个单个轻量级可执行文件—即容器—始终在任何基础架构上运行。 与 虚拟机 (VMs)相比,容器更具有可移植特性和资源效率,现已成为现代 云原生 应用的 实际 计算 单元。
容器化使开发人员能够更迅速、更安全地创建和部署应用。 使用传统方法时,代码是在特定计算环境中开发的,如果转移到新位置,通常会导致错误。 例如,如果开发人员将代码从桌面计算机转移到虚拟机(VM)或从 Linux 转移到 Windows 操作系统,通常会出错。 容器化通过将应用代码与运行代码所需的相关配置文件、库和依赖项捆绑在一起,消除了这个问题。 这个单一软件包,也就是“容器”,从主机操作系统中抽象出来,因此它是独立的,可移植到任何平台或云端运行,不会产生任何问题。
容器化 和过程隔离的概念提出已有数十年之久,但 2013 年 开源 Docker 引擎的 行业容器标准 以及简单的开发人员工具和通用打包方法的出现,加速推进了这种技术的广泛采用。 今天,组织越来越多地使用容器化来创建新的应用,并对现有的云应用进行现代化。 最近的一项 IBM研究 (PDF,1.4 MB)显示,61% 的容器采用者报告称,他们在过去两年中构建的新应用中有 50% 或更多使用容器;64% 的采用者预计在未来两年内将有 50% 或更多的现有应用放入容器中。
容器通常被称为是“轻量级”的,意思是它们共享机器的操作系统内核,从而消除了在每个应用中关联操作系统的开销。 本质上,容器所需的计算容量比 VM 小,启动时间也更短,因此用于运行一个 VM 所需的计算容量可运行大量的容器。 这有助于提高服务器效率,降低服务器和许可成本。
也许最重要的是,容器化允许将应用“一次编写,随处运行。” 这种可移植性加速了开发,防止了被云供应商锁定,并提供了其他显著优势,如 故障隔离、易管理性、简化的安全性和更多(见下文)。
如需更多概述,请查看此视频—“Containerization Explained”:
阅读此电子书 (1.4 MB)
容器将应用封装为软件的单一可执行软件包,将应用代码与运行代码所需的所有相关配置文件、库和依赖项捆绑在一起。 容器化应用是“隔离的”,因为它们不会捆绑在操作 系统的副本中。 在主机操作系统上安装的开源运行时引擎(如 Docker 运行时引擎) 成为容器在同一计算系统上与其他容器共享操作系统的管道。
其他容器层(如公共 bin 和库)也可以在多个容器之间共享。 这消除了在每个应用中运行操作系统的开销, 使得容器的计算容量更小,启动速度更快,从而提高服务器效率。 将应用隔离为容器还会减少一个容器中存在恶意代码从而影响其他容器或入侵主机系统的机会。
通过从主机操作系统中抽象出来,使得容器化应用具备了可移植性,能够在任何平台或云端以统一方式运行。 容器可以很方便地从桌面计算机转移到虚拟机(VM),或从 Linux 转移到 Windows 操作系统,它们以统一方式,在本地 或云端的虚拟化基础架构或传统的“裸机”服务器中运行。 这可确保软件开发人员继续使用自己最熟悉的工具和流程。
这就是为什么企业迅速采用容器化作为应用开发和管理的有效方法。 容器化使开发人员能够更迅速、更安全地创建和部署应用,无论应用是传统的单体式应用(单层软件应用),还是模块化 微服务(一系列松散耦合的服务)。 新的基于云的应用可以从头开始构建为容器化的微服务,将复杂的应用分解为一系列更小的专业化和可管理的服务。 现有的应用可以重新打包到更有效地使用计算资源的容器(或容器化的微服务)中。
了解更多信息
容器化为开发人员和开发团队带来显著效益。 包括以下几方面:
Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite
用户对于基于容器的解决方案的兴趣和使用量快速增长,因此需要制定有关容器技术和软件代码打包方法的标准。 Docker 和其他行业领导者于 2015 年 6 月建立的"开放式容器倡议"(OCI) 旨在推广有关容器技术的最低程度的通用开放标准和规格。 因此,OCI 正在帮助拓宽开源引擎的选择范围。 用户不会被特定供应商的技术套牢,而是可以充分利用 OCI 认证的技术,使用一系列多样化的 DevOps 工具构建容器化应用,并在自己选择的基础架构上以统一方式运行这些应用。
目前,Docker 是最知名、使用人数最多的容器引擎技术之一,但它并不是唯一可用选项。 生态系统对容器以及其他替代方法(如 CoreOS rkt、Mesos Containerizer、LXC Linux Containers、OpenVZ 和 crio-d)进行标准化。 这些技术的功能和默认配置各不相同,但通过坚持采用与时俱进的 OCI 规范,可确保这些解决方案与供应商无关并通过认证,可在多种操作系统上运行,可在多个环境中使用。
各种规模的软件企业开始将微服务作为应用开发和管理的有效方法。与较早的单体式模式将应用软件与关联的用户界面和底层数据库结合到单个服务器平台上的单一单元中不同, 微服务另辟蹊径,将复杂应用分解成一系列更小、更专业化的服务,每个服务都具有自己的数据库和业务逻辑。 然后,微服务通过公共接口 (如 API) 和 REST 接口 ( 如 HTTP) 相互通信。 通过使用微服务,开发团队可以集中精力更新应用的特定领域而不影响整体,从而加快开发、测试 和部署流程。
微服务和容器化背后的概念相似,都是软件开发实践,本质上是将应用转换为一系列可移植、可扩展、高效而且更易于管理的小型服务或组件。
而且,微服务和容器化结合起来使用效果更好。 容器为任何应用提供轻量级的封装,无论是传统的单体式应用,还是模块化的微服务。 在容器内开发的微服务,可获得容器化的所有内在优点,比如在开发流程和供应商兼容性方面的可移植性优点(不会被供应商套牢),以及开发人员敏捷性、故障隔离、服务器效率、安装自动化、缩放和管理以及安全层等优点。
目前的通信正迅速迁移到云端,以使用户能够快速高效地开发应用。 团队成员可通过任何与互联网连接的设备访问基于云的应用和数据,从而能够远程随时随地开展工作。 云服务提供商 (CSP) 管理底层基础架构,这节省了组织的服务器和其他设备的成本;此外 CSP 还提供自动化网络备份,进一步增强可靠性。 云基础架构可按需扩展,根据负载需求的变化,动态调整计算资源、容量 和基础架构。 在此基础上,CSP 定期更新产品,使用户能够持续获得最新的创新技术。
容器、微服务和云计算正共同努力,将应用开发和交付提升到传统方法和环境无法达到的新水平。 这些下一代方法显著提高了软件开发生命周期的敏捷性、效率、可靠性和安全性,使应用和增强功能可以更快地交付给最终用户和市场。
欲深入了解微服务,请观看“What are Microservices?”:
容器化应用具有一层内在的安全防护,因为它们可以作为隔离的进程运行,并且可以独立于其他容器运行。 这是真正的隔离,可以防止任何恶意代码影响其他容器或入侵主机系统。 但是,容器中的应用层通常在容器之间共享。 在资源效率方面,这是在做加法,但也打开了容器间相互干扰和安全漏洞的大门。 由于多个容器可与同一主机操作系统关联,因此共享操作系统也是个问题。 对公共操作系统的安全威胁可能会影响所有关联的容器,反之,容器安全违规也可能会威胁到主机操作系统。
但是,容器映像本身怎么样呢? 容器内打包的应用和开放源码组件如何提高安全性? 包括 Docker 在内的容器技术提供商仍在继续积极应对容器安全挑战。 容器化采用"默认安全"的方法,认为平台具备固有的安全性,无需单独部署和配置解决方案。 为此,容器引擎支持底层操作系统固有的所有默认隔离属性。 可定义安全许可权,以自动阻止不需要的组件进入容器,或限制与不必要资源的通信。
例如,Linux 名称空间有助于向每个容器提供系统的隔离视图;这包括网络、安装点、进程 ID、用户 ID、进程间通信和主机名设置等。 名称空间可用于限制通过每个容器内的进程对任何这些资源的访问。 通常,无法在容器中访问没有名称空间支持的子系统。 管理员可通过简单的用户界面,轻松创建和管理针对每个容器化应用的这些“隔离约束”。
研究人员正致力于进一步加强 Linux 容器的安全性,并提供了广泛的安全解决方案,用于在整个企业中进行自动化威胁检测和响应,监控和强制执行法规遵从性以满足行业标准和安全策略,确保通过应用和端点的数据流的安全,等等。
人们常常将容器与虚拟机(VM)做比较,因为这两种技术通过支持在单一环境中运行多种类型的软件(基于 Linux 或 Windows),实现显著的计算效率。 然而,容器技术正逐渐证明,它们能够比虚拟化技术带来更显著的效益,因此迅速成为 IT 专业人士所青睐的技术。
虚拟化技术支持多个操作系统和软件应用同时运行,共享单一物理计算机的资源。 例如,IT 组织可在同一服务器上同时运行 Windows 和 Linux 或多个版本的操作系统,以及多个应用。 每个应用及其相关文件、库 和依赖项(包括操作系统的副本)都打包在一起,成为一个 VM。 通过在单一物理机器上运行多个 VM,可在资本、运营和能源成本方面实现显著的节省。
有关虚拟化的更多概述,请查看视频“Virtualization in 2019”和“Virtualization: A Complete Guide。”
而另一方面,容器化使用计算资源的效率更高。 容器创建单一可执行软件包,将应用代码与运行代码所需的所有相关配置文件、库和依赖项捆绑在一起。 但与 VM 不同,容器并非捆绑在操作系统副本中。 相反,容器运行时引擎安装在主机系统的操作系统上,成为计算系统上所有容器共享同一操作系统的管道。
如前所述,我们通常说容器是“轻量级”的,因为它们共享机器的操作系统内核,消除了在每个应用中关联操作系统的开销(VM 就是这种情况)。 其他容器层(公共 bin 和库)也可在多个容器之间共享,这使得容器本身的计算容量比 VM 更小,而且启动速度更快。 用于运行单一 VM 的计算容量可运行多个容器,因此有助于提高服务器效率,进一步降低服务器和许可成本。
简而言之,虚拟化消除了用整个服务器运行一个应用的需求。 而容器化消除了用整个操作系统运行一个应用的需求。 容器化技术具有诸多优势,包括可移植性、敏捷性、故障隔离、易于管理和安全性,等等。
企业容器平台跨多个公有和私有云提供编排,以统一您的环境,从而提高业绩和运作性能。 它是开放式混合云战略的关键组成部分,可让您避免供应商套牢、在任何地方以一致的方式构建和运行工作负载,以及优化和现代化您的所有 IT。
采取下一步行动:
立即创建 IBM Cloud 账户 以使用该产品。
开放式混合云战略使您可以随时随地构建和管理工作负载,而不会被供应商锁定。
Red Hat OpenShift on IBM Cloud 在公共云和混合云环境中使用 OpenShift,着力提高运行速度,增强市场响应能力,改善可扩展性和可靠性。
借助 IBM Cloud Satellite,您可以随时随地在本地、边缘和公共云环境中启动一致的云服务。
使用混合云存储在本地和云存储环境中轻松无缝地部署支持容器的企业级存储系统。
简化复杂的混合 IT 管理,以提高可视性、易管理性和灵活性。