什么是容器?
Leadspace 云与数据
容器

本指南主要探讨容器在云计算中的重要性,强调核心优势,并展示 Docker、Kubernetes、Istio 和 Knative 等新兴技术的相关生态系统。

企业中的容器

阅读此电子书 (PDF, 1.4 MB)


什么是容器?

容器是软件的可执行单元,其中应用代码与库和依赖关系以通用方式打包在一起,因此它可以在桌面、传统 IT 或云端等任何位置运行。

为此,容器利用操作系统 (OS) 虚拟化形式,这里会利用操作系统的功能(在 Linux 内核中,即名称空间和 cgroups 原语)来隔离进程,并控制这些进程有权访问的 CPU、内存和磁盘的数量。

容器体积小、速度快且可移植,与虚拟机不同,容器不需要在每个实例中都包含访客操作系统,只需利用主机操作系统的功能和资源。

容器在几十年前首次出现,早期版本有 FreeBSD Jails 和 AIX Workload Partitions,但大多数现代开发人员都认为 2013 年 Docker的出现开启了现代容器时代。

为混合云构建灵活、弹性、安全的 IT

了解更多信息

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite


容器与虚拟机 (VM)

如需更好地理解容器, 一个方法是了解它与传统 虚拟机  (VM) 的不同之处。 在传统的 虚拟化中,无论是在本地还是在云端,都使用 管理器 来虚拟化物理硬件。 每个虚拟机都包含一个访客操作系统、操作系统运行所需硬件的一个虚拟副本以及一个应用及其关联的库和依赖项。

容器的虚拟化对象不是底层硬件,而是操作系统(通常是 Linux),因此每个单独的容器  包含应用及其库和依赖项。 由于缺少访客操作系统,容器才如此轻量,因此速度快且可移植。

如需了解详细的比较,请参阅“容器与虚拟机:区别在哪里?


容器的优点

容器的主要优点,尤其是与虚拟机相比,是提供一种抽象级别,使其轻量且可移植。

  • 轻量: 容器共享计算机操作系统内核,无需为每个应用程序提供完整的操作系统实例,容器文件小并且资源易于使用。 它们的体积更小,尤其是与虚拟机相比,这意味着可以快速运行,更好地支持横向扩展的 云原生 应用程序。  
  • 可移植且平台独立: 容器包含所有的依赖关系,这意味着软件在一次编写后即可运行,无需在笔记本电脑、云环境和本地计算环境中重新配置。
  • 支持现代开发与架构: 由于融入跨平台部署的可移植性/一致性以及体积小,容器非常适用于现代开发和应用模式,如 DevOps、 无服务器 和 微服务,它们都基于小增量常规代码部署而构建。
  • 利用率高:与之前的虚拟机相同,容器可使开发人员和操作人员提高物理机的 CPU 和内存利用率。 容器的进步之处在于,它们还支持微服务 架构,因此可以更精细地部署和扩展应用组件,相较于由于单个组件难以负载而必须扩展整个单体应用程序,这种解决方案更具吸引力。

在最近的一项 IBM 调研 (PDF, 1.4 MB) 中,开发人员和 IT 主管报告了使用容器的许多其他好处。

下载完整报告 — 企业中的容器 (PDF, 1.4 MB)

容器用例

容器日益发挥着主导作用,尤其是在云环境中。 许多组织甚至考虑用容器代替虚拟机,将其作为企业应用程序和工作负载的通用计算平台。 但在这个大范围内,有一些与容器特别相关的关键用例。

  • 微服务:容器体积小且轻量,因此非常适用于微服务架构,其中的应用程序由许多松散耦合且可独立部署的较小服务而构建。
  • DevOps :微服务即架构和容器即平台的结合是许多团队的常见基础,他们采用 DevOps 来构建、交付和运行软件。
  • 混合多云:由于容器可以在任何地方(跨笔记本电脑、本地和云环境)以一致方式运行,因此是 混合云 和 多云 场景的理想底层架构,这种架构下的企业可结合自己的数据中心,在多个公有云中运行。
  • 应用现代化与迁移:最常见的 应用现代化 方法是从容器化开始,便于它们之后 迁移 至云端

容器化

软件需要以不同的方式设计和打包,以便利用容器 — 这一过程通常称为 容器化

容器化应用包括打包应用及其相关的环境变量、配置文件、库和软件依赖关系。 最终会获得一个之后可在容器平台上运行的容器映像。 如需了解更多信息,请观看视频“容器化解读” (08:09):

使用 Kubernetes 的容器编排

随着企业开始将容器纳入现代云原生架构,简单的单个容器开始与跨分布式系统管理复杂的数百个(甚至数千个)容器发生冲突。

为了解决这一挑战,企业使用 容器编排 在整个生命周期中管理大量容器,包括:

  • 供应
  • 冗余
  • 运行状况监视
  • 资源分配
  • 扩展和 负载均衡
  • 在物理主机之间迁移

虽然许多容器编排平台(如 Apache Mesos、Nomad 和 Docker Swarm)都是为了应对这些挑战而创建, 开源项目 Kubernetes于 2014 年由 Google 推出后,迅速发展为最受欢迎的容器编排平台,也是大多数行业用于实现标准化的平台。

Kubernetes 使开发人员和操作人员能够 通过 YAML 文件声明整个容器环境的所需状态,然后由 Kubernetes 完成建立和维护该状态的所有工作,活动包括部署给定应用程序或工作负载指定数量 的 实例 、 在应用发生故障时重新启动、负载均衡、自动扩展、零宕机部署 等。

如需了解更多关于 Kubernetes 的信息,请观看 以下视频 (10:59)

,内容为 Sai Vennam 对 Kubernetes 的概述:

Kubernetes 目前由云原生计算基金会 (CNCF) 运营,该基金会是一个由 Linux 基金会赞助的供应商无关的行业组织。

 


Istio 、Knative 和扩展的容器生态系统

随着容器在打包和运行应用程序领域不断获得发展势头,旨在强化和扩展生产用例的工具与项目的生态系统也随之发展。 除了 Kubernetes 之外,容器生态系统中最受欢迎的两个项目是 Istio 和 Knative。

Istio

在开发人员利用容器来构建和运行微服务架构的过程中,管理问题不局限于单个容器的生命周期考虑范围,而是大量小型服务(通常称为“服务网格”)在相互连接和相互关联时需要考虑的问题。 Istio 旨在简化开发人员管理与发现、流量、监控、安全性等相关的挑战。 如需了解有关 Istio 的更多信息,请参阅“什么是 Istio ?”,并观看该 Istio 讲解视频 (05:06):

Knative

无服务器架构也越来越受欢迎,特别是在云原生社区中。 Knative 的最大价值在于它能够将容器化服务部署为 无服务器函数

无服务器函数不像服务器那样持续运行并在需要时响应,而是可以缩放到零,这意味着除非调用,否则完全不会运行。 当应用于数万个容器时,这一模型可以节省大量计算能力。

有关 Knative 的更多信息,请观看视频“什么是 Knative?” (07:58):


容器和 IBM Cloud

IBM Cloud 容器服务基于开源技术构建,可推动并加快企业云之旅的步伐。 使用持续集成和持续交付 (CI/CD) 工具构建容器化应用。 使用托管的Red Hat OpenShiftKubernetes服务来编排容器。 使用IBM Cloud Paks 中的容器化 IBM 中间件和开源组件实现现有应用的现代化。

了解更多关于IBM Cloud 上的容器的信息。

注册一个 IBMid 并创建 IBM Cloud 帐户

 


相关解决方案

面向容器的存储

借助 IBM Storage for Red Hat OpenShift,为容器提供具有数据弹性的持久存储和数据服务


容器安全解决方案

随处构建、部署和监控容器安全工具


IBM Cloud 上的容器

利用 IBM Cloud 领先的安全性、开源创新成果和企业级功能运行容器化工作负载