什么是容器?为什么要使用它们?
容器已经成为当前DevOps革命背后的关键驱动力之一。它们提供了虚拟机(vm)的轻量级、可移植和低成本的替代方案。它们还提供了一种更简单、更方便的方式来打包和部署现代应用程序。
容器进化的第一步可以追溯到1979年——随着Unix V7,介绍了一种使用chroot(change root)命令。
从那时起,资源隔离技术已经有了很大的发展,有了新的实现,例如FreeBSD监狱而且LXC,在21世纪初出现。
最初的应用也很缓慢。但这一切都随着码头工人在2013年。该平台使得容器化应用程序的部署和维护更加容易。因此,集装箱的使用激增。
但容器到底是什么?与传统的应用程序托管方法相比,它们有哪些优势?
本介绍介绍了该技术的关键概念和优点。它还提供了额外的资源,您可以在其中更详细地了解容器。2022世界杯阿根廷预选赛赛程
什么是容器?
容器是一种应用程序部署技术,它执行与虚拟机(vm)类似的角色。就像传统虚拟化一样,容器为应用程序提供隔离的环境。但是,它们使用不同的方法来划分基础设施资源。2022世界杯阿根廷预选赛赛程
虚拟机使用管理程序来模拟成熟的客户操作系统,而容器共享内核主机操作系统的其他容器。
此外,它们为您的工作负载提供了更加简化的环境,因为它们消除了成熟的操作系统,而只提供资源,例如2022世界杯阿根廷预选赛赛程安装,依赖关系而且代码你的应用程序实际需要的。
因此,容器可以显著降低应用程序的基础设施占用空间。它们还提供了比vm更好的性能。而且它们能够更快地停止和启动,使它们对波动的扩展需求更加敏感。
容器可移植性
容器将应用程序与底层基础设施分离。这使开发人员的工作更轻松,因为他们可以将精力集中在编写代码上,而不是托管代码的环境。
例如,它们可以用不同的配置在不同的服务器上复制容器,前提是每个服务器操作系统使用相同的Linux内核(或与容器环境兼容的内核)。这允许程序员团队在项目中协作工作,而不管他们各自使用的主机环境是什么。
而且,由于其紧凑的设计,容器也很容易集成持续集成(CI)而且持续交付(CD)工作流。
容器用例
容器最适合现代云应用程序,云应用程序基于松散耦合微服务的分布式体系结构。
与大型单片程序相比,这种方法提供了许多优点。
例如,您可以跨虚拟机集群复制微服务来提高容错能力。这样,如果虚拟机出现故障,应用程序将继续运行,转而使用集群中的其他微服务。
同样,它们可以帮助消除维护停机时间,因为您可以打补丁或更新容器的代码和操作环境,而不会影响集群中的其他容器。
了解关于微服务架构的更多信息
想了解更多关于微服务以及如何将应用程序迁移到容器化基础设施的知识吗?
我们的旅游指南容器在微服务体系结构中的作用我会告诉你怎么做。
容器的关键概念
下面的概念对于理解容器平台(例如码头工人,在实践中工作。
容器引擎
安装在主机上用于构建、运行和管理容器的应用程序。它是安装的核心,并将容器系统的所有其他组件组合在一起。
容器的形象
一个只读的模板用于创建实际运行的容器。它由一组文件组成,这些文件将配置一个完全可操作的容器环境所需的所有要素捆绑在一起。
组成映像的每个文件都称为层。这些层形成了一系列中间图像,一个在另一个上分期建立。
因为容器映像是只读的,所以它们提供了现代的所有可靠性和一致性不可变的基础设施,避免了传统服务器模型中非常常见的配置漂移等问题。如果需要对容器环境进行更改,只需将以前的映像替换为更新后的映像,并从中启动替换的容器。
父母的形象
容器图像的第一层和起点。它为容器环境提供了基本的构建块,并为所有其他层提供了构建基础。
父映像通常是一个精简的Linux发行版。但它们也可以是一个应用程序框架,甚至是一个完整的应用程序堆栈——例如现成的应用程序内容管理系统(CMS)。
对象中导入预配置的父映像容器注册表服务,例如码头工人中心或谷歌集装箱注册处。或者,您也可以使用自己的一个现有映像作为父映像。
基地图片
本质上是一个空的第一层,它允许您从头构建容器映像。基本图像通常是为更高级的用户设计的,他们希望完全控制图像的每个部分。
容器
容器映像的活实例。一个运行的容器基本上包括:
从其中启动的映像。
最上面的可写层,称为容器层,用于存储在容器运行时对其所做的任何更改。
这种分层结构是容器效率的关键,因为它允许类似的容器共享对相同底层映像的访问,同时每个容器维护自己的单独状态。
容器图像卫生
由于底层映像构成了活动容器的大量解剖结构,因此映像卫生对于容器化部署的安全性和性能是绝对必要的。
首先要保持图像精简——图像越大,攻击面就越大,膨胀就会降低性能。
因此,当您从容器注册表中提取父映像时,请避免自动使用您正在寻找的映像的最新版本。
相反,应该寻找图像尺寸较小的合适替代品。然后,您可以根据需要将任何其他包和依赖项添加到自己的映像构建中。
您应该能够找到所选容器注册表中列出的每个映像的压缩大小,如下图所示的Docker Hub上的示例Ubuntu版本。
然而,您的映像优化不应该止步于此,因为您可以通过在自己的构建过程中清除不必要的工件来进一步简化映像。
学习如何创建您自己的Docker映像
在我们的初学者理解和构建Docker映像指南中,我们将带您一步一步地完成创建Docker映像的过程。
最后,作为容器安全漏洞防御的一部分,您应该使用图像漏洞扫描工具。这包括容器注册服务提供的内置产品和第三方扫描程序,例如Anchore而且克莱尔。
理想情况下,这些应该完全自动化并集成到您的CI而且CD工作流,因为这将有助于避免手工疏忽,加快开发时间。
