菜单图标

Containerization

探索集装箱技术的历史,利用该技术的好处和优势以及如何与虚拟化相关。

什么是集装箱化?

集装箱化已成为软件开发的主要趋势,作为替代或伴侣 虚拟化 。它涉及封装或打包到软件代码和所有依赖项,以便它可以在任何基础架构上均匀且始终运行。该技术迅速成熟,从而为开发人员和运营团队以及整体软件基础设施提供可衡量的好处。

Containization允许开发人员更快,更安全地创建和部署应用程序。使用传统方法,代码是在特定计算环境中开发的,当传输到新位置时,通常会导致错误和错误。例如,当开发人员将代码从桌面计算机传输到a时 虚拟机 (VM)或从Linux到Windows操作系统。 Containization通过将应用程序代码与其运行所需的相关配置文件,库和依赖项捆绑在一起,消除了此问题。这种软件或“容器”包从主机操作系统抽象出来,因此,它独立地站立并变得可以在任何平台或云中运行,没有问题。

集装箱化和过程隔离的概念是数十年的历史,但开源的出现 Docker发动机 2013年,具有简单开发人员工具和通用包装方法的容器的行业标准,加速了采用这项技术。研究公司Gartner项目,超过50%的公司将在2020年将集装箱技术使用。和2017年底的结果 民意调查 (PDF,457 kB)由IBM进行,建议采用更快地发生,揭示了59%的采用者改善了应用质量和​​结果减少的缺陷。

容器 通常被称为“轻量级”,这意味着它们共享机器的操作系统内核,并且不需要将操作系统在每个应用程序中关联的开销。容量的容量具有比VM的容量固有更小,并且需要更少的启动时间,允许更多容器以与单个VM相同的计算容量运行。这会驱动更高的服务器效率,然后反过来减少服务器和许可成本。

简而言之,Containization允许应用程序“写一次并在任何地方运行”。这种可移植性在开发过程和供应商兼容方面非常重要。它还提供其他显着的好处,如故障隔离,易于管理和安全性,以命名几个。点击这里了解更多有关的信息 容器化的好处.

有关更多概述,请参阅此视频 - “扩展索容化”(8:09):

应用程序集装箱

容器将应用程序封装为单个可执行软件软件包,该软件包与其运行所需的所有相关配置文件,库和依赖项一起捆绑在一起的应用程序。集装箱化应用程序“孤立”,因为它们不会在操作系统的副本中捆绑。相反,在主机的操作系统上安装了开源运行时引擎(例如Docker运行时引擎),并成为容器的导管,用于在同一计算系统上与其他容器共享操作系统。

其他容器层,如普通箱和图书馆,也可以在多个容器之间共享。这消除了在每个应用程序中运行操作系统的开销,并使容量更小,以更快地启动,驾驶更高的服务器效率。应用程序作为容器的孤立也减少了一个容器中存在的恶意代码会影响其他容器或侵入主机系统的可能性。

来自主机操作系统的抽象使容器化应用程序便携并且能够均匀地运行任何平台或云。容器可以轻松地从桌面计算机传输到虚拟机(VM)或从Linux到Windows操作系统,它们将在虚拟化基础架构或传统的“裸机”服务器上一致,无论是内部部署还是在云。这可确保软件开发人员可以继续使用它们最熟悉的工具和流程。

人们可以看出为什么企业正在迅速采用集装箱化作为应用开发和管理的卓越方法。 Containization允许开发人员更快地创建和部署应用程序,更快,更安全,是应用程序是传统的巨石(单层软件应用程序)或模块化微服务(一个松散耦合服务的集合)。新的基于云的应用程序可以从地下构建为集装箱微服务,将复杂的应用程序分为一系列较小的专业和可管理的服务。可以将现有的应用程序重新包装到包含计算资源的容器(或集装箱SicroService)中更有效地进行复制。

好处

集装箱化对开发人员和开发团队提供了显着的好处。其中包括:

  • 可移植性:  容器创建一个可执行软件软件包,这些软件被摘要远离(未绑定到或依赖于或依赖于)主机操作系统,并且因此是便携式的,并且能够在任何平台或云上均匀且一致地运行。 
  • 敏捷:  用于运行容器的开源Docker引擎启动了具有简单开发人员工具的容器的行业标准以及适用于Linux和Windows操作系统的通用包装方法。集装箱生态系统已转移到由开放集装箱计划(OCI)管理的引擎。软件开发人员可以继续使用敏捷或 德沃斯 应用快速应用开发和增强的工具和流程。
  • 速度:  容器通常被称为“轻量级”,这意味着它们共享机器的操作系统(OS)内核,并且不会使用此额外的开销逐渐陷入困境。这不仅可以推动更高的服务器效率,它还减少了服务器和许可成本,同时加速开始时间,因为没有操作系统来启动。
  • 误隔离: 每个集装箱化应用都被隔离并独立于其他应用操作。一个容器的失败不会影响任何其他容器的持续运行。开发团队可以在没有其他容器中的任何停机时间内识别和纠正一个容器内的任何技术问题。此外,集装箱引擎可以利用任何OS安全隔离技术 - 例如Selinux访问控制 - 隔离容器内的故障。
  • 效率:  Containized环境中运行的软件共享机器的OS内核,并且容器中的应用程序图层可以在容器中共享。因此,容器的容量固有地小于VM并且需要更少的启动时间,允许更多容器以与单个VM相同的计算容量运行。这会驱动更高的服务器效率,减少服务器和许可成本。
  • 易于管理: A 容器编排 平台自动安装集装箱工作负载和服务的安装,缩放和管理。 Container Orchestration平台可以简化管理任务,如缩放容器化应用程序,推出新版本的应用程序,并提供监视,记录和调试等功能。 Kubernetes. 可能是最受欢迎的容器编排系统,是一个开源技术(谷歌最初开放,基于他们的内部项目名为Borg),最初自动化Linux容器功能。 Kubernetes适用于许多集装箱引擎,例如Docker,但它也适用于任何符合容器图像格式和运行时的开放容器主动(OCI)标准的任何容器系统。
  • 安全:  作为容器的孤立的孤立本质地防止了侵入恶意代码影响其他容器或主机系统。此外,可以定义安全权限以自动阻止不需要的组件输入容器或限制与不必要的资源的通信。

类型

基于集装箱解决方案的兴趣和使用的快速增长导致了对集装箱技术的标准和包装软件代码的方法。由Docker和其他行业领导者于2015年6月建立的开放集装箱倡议(OCI)正在推动集装箱技术周围的普通,最小,开放的标准和规格。因此,OCI有助于扩大开源发动机的选择。用户将不会被锁定到特定的供应商的技术中,而是能够利用OCI认证的技术,允许它们使用各种DevOps工具构建集装箱化应用程序,并在基础设施上始终如一地运行这些技术他们的选择。

今天,Docker是最着名和最富含使用的集装箱发动机技术之一,但它不是唯一可用的选择。生态系统标准化Containerd和CoreOS RKT,Mesos集装箱,LXC Linux容器,OpenVZ和CRIO-D等替代品。功能和默认值可能不同,但采用和利用OCI规范,因为这些演变将确保解决方案是供应商中性,认证以在多个操作系统上运行并在多个环境中使用。

微服务和集装箱化

与早期单片模型相比,软件公司大小是将微服务作为应用开发和管理的卓越方法,它将软件应用程序与相关的用户界面和底层数据库相结合到单个服务器平台上的单个单元中。通过微服务,复杂的应用程序被分解为一系列更小,更专业的服务,每个服务都有自己的服务 数据库 及其自己的业务逻辑。然后,微服务在常用接口(如API)和REST接口(如HTTP)上彼此互相通信。使用微服务,开发团队可以专注于更新应用程序的特定区域而不会影响其整体,导致更快的开发,测试和部署。

微服务和集装箱化的概念与软件开发实践相似,基本上将应用转换为具有便携式,可扩展,高效更容易管理的较小服务或组件的集合。

此外,在一起使用时,微服务和容器化工作良好。容器提供任何应用的轻量级封装,无论是传统的雄性单极性还是模块化微服务。在容器中开发的微服务,然后在开发过程和供应商兼容性(无供应商锁定)以及开发人员灵活性,故障隔离,服务器效率,自动化方面,获得集装箱化可移植性的所有固有效益安装,扩展和管理以及安全层等。

今天的通信正在迅速转向云,用户可以快速有效地开发应用程序。基于云的应用程序和数据可从任何因特网连接设备访问,允许团队成员远程工作,并在一起。云服务提供商(CSP)管理底层基础架构,可节省组织服务器和其他设备的成本,并提供自动网络备份以获得额外的可靠性。云基础架构按需缩放,可以动态调整计算资源,容量和基础架构,因为负载要求发生变化。最重要的是,CSP定期更新产品,让用户继续获得最新的创新技术。

容器,微服务和 云计算 在共同努力,将应用程序开发和交付给新的水平与传统方法和环境不可能。这些下一代方法为软件开发生命周期添加了敏捷,效率,可靠性和安全性,这导致应用程序和增强功能更快地向最终用户和市场提供。

更深入地进入微服务,退房“微服务:一个完整​​的指南“并观看以下”什么是微服务?“视频(6:38):

 

安全

集装箱应用程序本身具有安全程度,因为它们可以作为隔离的过程运行,并且可以独立于其他容器运行。真正孤立的是,这可能会阻止任何恶意代码影响其他容器或入侵主机系统。但是,容器内的应用层通常在容器上共享。在资源效率方面,这是一个加号,但它也打开了整个容器的干扰和安全漏洞。可以说共享操作系统可以说同样的,因为多个容器可以与相同的主机操作系统相关联。对公共操作系统的安全威胁可以影响所有相关的容器,并相反,容器漏洞可能会引起主机操作系统。

但是,那呢? 容器图像 本身?如何在容器中打包的应用程序和开源组件提高安全性?集装箱技术提供商,如Docker,继续积极地解决容器安全挑战。 Containization已采取“默认默认的”方法,相信该平台中的安全性应该是固有的,而不是单独部署和配置的解决方案。为此,容器引擎支持底层操作系统中固有的所有默认隔离属性。可以定义安全权限以自动阻止不需要的组件进入容器或限制与不必要的资源的通信。

例如,Linux命名空间有助于向每个容器提供系统的孤立视图;这包括网络,安装点,进程ID,用户ID,进程间通信和主机名设置。命名空间可用于通过每个容器内的进程限制对任何这些资源的访问。通常,不可从容器内访问不具有命名空间支持的子系统。管理员可以通过简单的用户界面轻松地在每个容器化应用程序上创建和管理这些“隔离约束”。

研究人员正在努力进一步加强Linux容器安全性,并且可以在企业中自动化威胁检测和响应,以便监控和实施符合行业标准和安全策略,以确保通过应用程序和端点等等。

了解A. 跨任何大小的组织缩放容器安全的策略.

虚拟化与集装箱化

容器通常与虚拟机(VMS)进行比较,因为这两种技术都可以通过允许在单个环境中运行多种类型的软件(基于Linux或Windows或基于Windows)来实现显着的计算效率。然而,集装箱技术正在证明是在虚拟化和高于虚拟化的方面提供显着的好处,并迅速成为IT专业人士青睐的技术。

虚拟化技术允许多个操作系统和软件应用程序同时运行并共享单个物理计算机的资源。例如,IT组织可以运行Windows和Linux或多个版本的操作系统,以及同一服务器上的多个应用程序。每个应用程序及其相关文件,库和依赖项,包括操作系统(OS)的副本作为VM包装在一起。在单个物理机器上运行多个VM,可以实现资本,操作和能源成本的大量节省。

更多关于虚拟化的概述,请查看“2019年的虚拟化 “视频和” 虚拟化:一个完整​​的指南 。“

另一方面,集装箱化更有效地使用计算资源。容器创建单个可执行软件软件包,其与其运行所需的所有相关配置文件,库和依赖项一起捆绑在一起的应用程序代码。然而,与VM不同,容器 不是 捆绑在操作系统的副本中。相反,集装箱运行时引擎安装在主机系统的操作系统上,成为所指示的导管,通过该导管通过该导管,计算机上的所有容器都共享相同的操作系统。

如上所述,容器通常被称为“轻量级” - 他们共享机器的OS内核,并且不需要将OS关联在每个应用程序中的开销(如vm的情况,而VM的情况。其他容器层(公共箱和图书馆)也可以在多个容器之间共享,使容器的容量与VM具有固有的容量,并更快地启动。然后,多个容器可以以与单个VM相同的计算容量运行,驾驶更高的服务器效率,进一步减少服务器和许可成本。

集装箱和IBM云

简而言之,虚拟化无需为一个应用程序提供整个服务器。容器化消除了每个应用程序对整个操作系统的需求。便携性,敏捷性,故障隔离,易于管理和安全性是利用集装箱化技术的优点。

IBM Container Services建立在开源技术上,以方便并加速您的云之旅。使用连续集成和连续交付(CI / CD)工具构建集装箱化应用程序。使用管理的组织集装箱 红帽openshift. 或者 Kubernetes. 服务。并使用集装箱中的IBM中间件和开源组件现代化现有应用程序 IBM Cloud Paks. .

学习更多关于 IBM云上的容器.

或注册 IBM云帐户 并开始免费提供第一个集群。