什么是容器化?

容器化是一种虚拟化,其中应用程序的所有组件都捆绑到一个容器映像中,并且可以在同一共享操作系统上的隔离用户空间中运行。容器重量轻、便携,并且非常有利于自动化。因此,容器化已成为各种用例的开发管道和应用程序基础设施的基石。了解什么是容器化以及如何安全地实施它,可以帮助您的组织实现技术堆栈的现代化和扩展。

什么是容器化?

容器化是如何工作的?

容器化的工作原理是将特定应用程序的所有必需部分虚拟化为一个单元。在幕后,这意味着容器包括应用程序所需的所有二进制文件、库和配置。但是,容器不包括虚拟化硬件或内核资源。

相反,容器在抽象资源的容器运行时平台“之上”运行。因为容器只包含应用程序的基本组件和依赖项而没有额外的膨胀,所以它们比虚拟机或裸机服务器等替代方案更快、更轻量级。它们还可以抽象出与在不同环境中运行相同应用程序相关的问题。如果你能提供底层的容器引擎,你就可以运行容器化的应用程序。

容器化与虚拟化

外行很容易对容器化(Docker 等容器化软件支持的内容)和传统服务器虚拟化(HyperV 和 VMware ESXi 等管理程序支持的内容)之间的区别感到困惑。简单来说,区别归结为:

服务器虚拟化是关于抽象硬件和运行操作系统。容器化是关于抽象操作系统并运行应用程序。它们都抽象出资源,容器化只是服务器虚拟化的另一个“升级”。事实上,容器化和服务器虚拟化并不相互排斥。您可以在部署在虚拟机中的容器引擎之上运行容器化应用程序。

容器化的层次

为了更好地了解容器化究竟是如何工作的,让我们仔细看看所有部分——从硬件到容器化应用程序——是如何组合在一起的。

  • 硬件基础设施:对于任何应用程序,一切都始于某处的物理计算资源。无论这些资源是您自己的笔记本电脑还是分布在多个云数据中心,它们都是容器工作的必备条件。
  • 主机操作系统:位于硬件层之上的下一层是主机操作系统。与硬件层一样,这可以像在您自己的计算机上运行的 Windows 或 *nix 操作系统一样简单,也可以由云服务提供商完全抽象出来。
  • 容器引擎:这是事情开始变得有趣的地方。容器引擎在您的主机操作系统之上运行,并为容器化应用程序虚拟化资源。该层最简单的示例是在您自己的计算机上运行 Docker。
  • 容器化应用程序:容器化应用程序是代码单元,包括应用程序运行所需的所有库、二进制文件和配置。容器化应用程序作为“用户空间”(操作系统内核之外)中的隔离进程运行。

什么是容器化?

容器化的好处

鉴于我们所知道的,我们可以看到容器化仅将应用程序需要的内容捆绑到一个单元中,并允许应用程序在容器引擎存在的任何地方运行。考虑到这一点,就很容易看出容器化的好处,其中包括:

  • 可移植性:过去传统的“开发与运营”挑战之一是为什么给定的应用程序可以在一个环境(例如暂存)而不是另一个环境(例如生产)中工作。通常,问题是由于两种环境中的差异而得到调和的。例如,可能安装了特定依赖项的不同版本。容器化解决了这个问题,因为完全相同的容器镜像——包括依赖项——可以在任何地方运行。
  • 速度:容器的启动时间往往是虚拟机或裸机服务器所需时间的一小部分。虽然具体的启动时间会因资源和应用程序的大小而异,但一般来说,容器会在几秒钟内启动,而虚拟机可能需要几分钟。
  • 效率:因为容器只包含应用程序运行所需的内容,所以它们比虚拟机轻量级得多。容器的大小通常为兆字节,而虚拟机的大小通常为千兆字节。因此,容器使团队能够更有效地使用服务器资源。
  • 部署简单:由于容器轻便便携,几乎可以轻松部署到任何地方。如果可以运行底层容器引擎,就可以运行容器化应用程序。
  • 可扩展性:容器化应用程序启动速度快,不占用太多空间,易于部署。因此,容器化使扩展部署变得更加容易。这就是为什么容器已成为微服务和基于云的应用程序的基石。

特定的容器化用例

了解容器化的好处很重要,但了解真实世界的用例可以让您将知识付诸实践。以下是一些流行的容器化用例示例:

  • 微服务:微服务架构是围绕许多小型、独立且松散耦合的服务协同工作的理念构建的。由于容器是部署独立代码单元的好方法,因此它们已成为部署微服务的事实标准。
  • CI/CD:持续集成/持续部署 ( CI/CD ) 就是快速测试和部署可靠的软件。通过将应用程序捆绑到可移植、轻量级和统一的代码单元中,容器化可以实现更好的 CI/CD,因为容器自动化友好、减少依赖性问题并最大限度地减少资源消耗。
  • 对遗留应用程序进行现代化改造:许多团队正在将遗留的单一应用程序迁移到云端。然而,为了做到这一点,他们需要确保该应用程序能够真正在云端运行。在许多情况下,这意味着利用容器化来确保应用程序可以部署在任何地方。

什么是容器化?

Kubernetes 和容器

Kubernetes也称为 K8s,是一种流行的工具,可帮助扩展和管理容器部署。Docker 或 LXC 等容器化软件缺乏编排更大容器部署的功能,而 K8s 填补了这一空白。虽然还有其他容器编排工具(如 Apache Mesos 和 Docker Swarm),但 K8s 是迄今为止最受欢迎的。

当然,“管理”和“编排”是模糊的术语。那么,Kubernetes 到底能做什么呢?让我们来看看:

  • 推出和回滚:K8s 允许您根据有关资源利用的预定义规则自动创建和部署新容器或删除容器集群中的现有容器。
  • 存储挂载:使用 Kubernetes,您可以自动为您的容器挂载存储资源。
  • 资源分配:大规模平衡 CPU 和 RAM 消耗是一项具有挑战性的任务。K8s 使您能够定义 CPU 和 RAM 要求,然后它会在资源(节点)的约束范围内自动处理容器的最佳部署。
  • 自愈:通过K8s,你可以定义健康检查,如果你的容器不符合要求,它们将被自动恢复或替换。
  • 配置管理:K8s 有助于安全地管理容器配置,包括令牌和 SSH 密钥等敏感数据。
  • 负载均衡:Kubernetes 可以跨多个容器自动执行负载均衡,以实现高效的性能和资源利用,保护容器。

你可能认为因为容器是隔离的,所以它们是“安全的”。不幸的是,事情并没有那么简单。虽然容器在用户空间中确实是相互隔离的,但错误配置、漏洞和恶意行为者都会构成威胁。简而言之:保护您的容器是必须的。

在容器化应用程序时,您必须考虑许多特定的容器安全注意事项。例如,持续监控容器注册表以发现新漏洞并利用容器防火墙是全面容器安全的重要方面。此外,必须保护运行容器引擎的主机操作系统。

当然,保护容器化应用程序意味着您还必须认真对待应用程序安全性 (appsec) 。这意味着要全面了解您的环境、创建安全配置文件、识别威胁并在适当时利用交互式应用程序安全测试 (IAST) 解决方案和Web 应用程序防火墙 (WAF)等工具。

文章链接: https://www.mfisp.com/20545.html

文章标题:什么是容器化?

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
IDC云库

为什么机器学习在网络安全中很重要?

2023-5-16 14:24:55

IDC云库

什么是云敏捷?

2023-5-17 14:53:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
客户经理
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠