开源技术 * IBM 微讲堂:Kubeflow 系列(观看回放 | 下载讲义) 了解详情

IBM Developer 博客

通过 IBM Developer 关注最新动态并获取信息

为什么要关心容器以及它们如何与微服务和云交互。


“来吧,朋友们,这一点都不难。也许你需要进修一下课程。……现在已是滚珠轴承的时代了。” —— 1985 年影片《古灵侦探》

可悲的是,现在和滚珠轴承一点关系都没有了。现在早已进入容器时代了。如果您听说过容器,但是不确定它们是什么,本文正好适合您。这篇博客文章探讨了以下问题:

  • 我为何要关心容器?
  • 容器是什么?
  • 容器和微服务是一回事吗?
  • 微服务应用的例子有哪些?
  • Docker 容器是什么?
  • 容器编排和 Kubernetes 又是什么?
  • 容器与虚拟机镜像之间有何区别?
  • 如何开始使用容器?
  • IBM Cloud Paks 如何提供帮助?
  • 我可以在哪些地方运行容器?
  • Red Hat OpenShift on IBM Cloud 是什么?

我为何要关心容器?

在各种不同组织中,容器的采用范围都很广泛。许多人都在学习容器。一些公司在他们的容器化之旅中走得更远。如果您终究要考虑进行容器化,那么现在就加入进来吧,一起见证真实的业务成果:

  • 加快产品上市时间:新的应用程序和服务才能让您持续保持竞争优势。组织能够加快交付新服务,并实现开发和运营敏捷性。
  • 部署速度:从开发到部署的速度提高了。容器化为 DevOps 团队加快部署时间和频率扫清了障碍。
  • IT 基础架构缩减:通过提高应用程序工作负载密度,更充分地利用服务器计算密度以及降低软件许可成本,降低了成本。
  • IT 运营效率:通过自动管理各种应用程序和基础架构并简化为单一运营模型,提高了运营效率。
  • 享有自由选择权:可在任何公共云或私有云上打包、传送和运行应用程序。

容器是什么?

理解容器时,最恰当的比喻莫过于船运集装箱了。正因为如此,在大多数关于容器的文章和博客中,您都会看到一张船运集装箱的照片。我们敢肯定,您看到过那些大型钢铁船运集装箱的运输过程。(我们还看到一些人用这些集装箱来建造房屋和游泳池。)航运业为集装箱的一致尺寸设定了标准。现在,相同的集装箱可以直接从船上转移到火车或卡车上,而无需卸货。集装箱中的物品无关紧要。

就像船运集装箱一样,软件容器就是标准化的软件包。运行软件所需的一切内容统统包含在容器中。软件代码、运行时、系统工具、系统库和设置全都在一个容器中。

容器和微服务是一回事吗?

一旦您开始研究容器,肯定就会阅读有关微服务的内容。(微服务不是您在晚上搭乘的那些小汽车。那些是微型机器。也许我们在自说自话?)微服务是一种架构样式。微服务架构通过用作为提供特定业务功能的松散耦合服务的集合来构造应用程序。容器有助于实现这一点。

微服务应用程序的示例有什么?

十多年前,Netflix 是最早开始广泛使用容器的公司之一。这家公司使用微服务架构重新编写了应用程序来运行整个视频服务。据 Netflix 估计,它采用了约 700 种微服务来控制构成其服务的众多功能中的每一项功能。我们来看几个例子(并非全部 700 个):

  1. 视频选择:容器中的微服务可为您的手机、平板电脑、计算机或电视提供要播放的视频文件,并根据您的互联网速度提供视频质量。
  2. 查看历史记录:一项微服务会记住您所观看的节目。
  3. 节目推荐:一项微服务会查看您的观看历史记录,并使用分析功能推荐电影。
  4. 主菜单:一项微服务提供了主菜单上显示的这些电影的名称和图像。
  5. 计费:另一项微服务从您的信用卡中扣除月费。

Netflix 用户每天会产生大约 1.4 亿小时的流媒体内容,在 190 个国家/地区拥有大约 1.828 亿订户]。在这种规模下,短短几秒钟内提供娱乐内容,让他们的应用程序经受了考验。没错,无论是小型企业还是大型企业,容器统统适用。

Docker 容器是什么?

既然了解了什么是容器,现在就应该介绍 Docker 了。(我们说的不是舒适的星期五休闲裤 Dockers。)Docker 是开源容器化技术的名称,能够创建和使用容器。Docker 并不是什么新技术,实际上自 2008 年起它就已悄然出现。虽然还有其他容器候选技术,但大多数人认为 Docker 无疑是这场容器大战中的赢家。(你们中有些人可能还记得几年前的蓝光技术与 HD-DVD 标准之战。蓝光技术取得了胜利。而 Docker 就像是蓝光技术。)Docker 允许您在任何公共云或私有云上打包、传送和运行应用程序。能够随时随地运行应用程序,有助于您避免供应商锁定,并且可随时转移到新环境。

容器编排和 Kubernetes 又是什么?

这里还有一个关键的概念需要介绍,即“编排”。如果您只有一个容器,那么很容易管理。但是,随着您创建更多容器,有效管理这些容器便显得至关重要了。否则,您就有可能陷入一片混乱。(混乱可不是什么好事。)Kubernetes 可以让您避免上述混乱。(趣味小知识:Kubernetes 是希腊语,意为舵手或飞行员。)Kubernetes 是一个开源系统,可以试运行或编排您喜欢的容器化应用程序。Kubernetes 就好比一台起重机,能够移动并控制您的集装箱。

如前所述,Kubernetes 可以编排您的容器。这到底是什么意思?Kubernetes 可以扩大或缩小您的应用程序。Kubernetes 可以为您的应用程序实施变更和升级。如果出现问题,Kubernetes 会回滚变更并重新启动出现故障的容器,在节点停止运行时替换容器,并停止运行未响应运行状况检查的容器。这种管理可以节省资源而不牺牲可用性,并实现自动负载均衡。

容器与虚拟机镜像之间有何区别?

顾名思义,虚拟机 (VM) 是模拟计算机系统的软件。利用 VM 您的团队能够在一台计算机上运行看似是多台计算机的设备。如果需要在其他类型的硬件或操作系统上运行软件,则 VM 可以提供该选项,而无需使用其他硬件。

容器和 VM 之间的主要区别 在于,团队使用 VM 可以创建虚拟环境,其中包含操作系统,可以运行不同类型的软件。但是,容器会将软件与环境和操作系统隔离开来,从而使其几乎可以随时随地运行。

如何开始使用容器

最好的方法就是从一个容器开始。应用程序容器化有很多好处,但问题是从何处着手呢?或者说,如何开始呢?以下是三种方法:

  1. 迁移和扩展:“平移”的过程如下:将本地应用程序容器化以便提升(通常是从数据中心),然后将其转移到其他地方,通常是公有云或私有云。要指出的是,“平移” 不是重构或分解您的应用程序。它是将应用程序的大部分或整个放入单个容器中。
  2. 应用程序现代化:更激进的方法是将您的整体应用程序重构到微服务容器中。这种方法是从一种开发方法转变为另一种方法。
  3. 新开发:一些组织选择使用容器来启动所有新开发工作。

IBM Cloud Paks 如何提供帮助?

除了容器和 Kubernetes,企业还需要编排生产拓扑,并为应用程序提供管理、安全和治理功能。IBM Cloud Paks 应运而生。

IBM Cloud Paks 是适用于企业的容器化软件解决方案,提供了一种更快、更安全的开放方式,用于将核心业务应用程序迁移到任何云端。每个 IBM Cloud Pak 都在 Red Hat® OpenShift® on IBM Cloud™ 和 Red Hat Enterprise Linux 上运行,并在通用集成层之上包含容器化的 IBM 中间件和用于开发和管理的通用软件服务。该视频 IBM Cloud Paks 说明解释了相关架构。

详细了解适用于应用程序、数据、集成、自动化和多云管理的 Cloud Pak 解决方案

我可以在哪些地方运行容器?

请记住,Docker 和 IBM Cloud Paks 允许您在任何公有云或私有云上打包、传送和运行应用程序。如今,大多数组织都不会只依赖于一家云供应商。这的确是一种很好的做法。85%的公司已在多云环境中运营,这些环境中的大多数由多个混合云组成。

可以考虑三种不同类型的云环境:

  1. 公有云:公有云是一个多租户环境,但是完全受到管理,并基于使用情况提供定价。IBM Cloud、AWS 和 Azure 都是公有云。您可以在上述任何云中运行 IBM Cloud Paks。
  2. 专属云:专属云具备公有云的优势,但具有专用的基础架构。专属云可满足许多行业法规要求。此外,您不会与其他人共享计算能力。
  3. 私有云:私有云可为您提供云计算的优势,但位于防火墙之后。Red Hat OpenShift on IBM Cloud 是一项全面的服务,可在可扩展且可靠的 IBM Cloud 平台上提供完全托管的 OpenShift 集群。您掌控着相关密钥,而它则在安全的 IBM 数据中心内运行。

Red Hat OpenShift on IBM Cloud 是什么?

容器、Docker、Cloud Paks 和 Kubernetes,全部都有?Red Hat OpenShift on IBM Cloud 为您整合了上述一切内容,因此您可以专注于应用程序的开发和管理。观看视频 Red Hat OpenShift on IBM Cloud 导览,了解该服务如何为您管理 OpenShift 集群。它直接集成到相同的 Kubernetes 服务中,该服务每天维护 The Weather Company 的 2500 亿次点播预测,数量庞大。

详细了解相关功能,例如具有本机 OpenShift 体验的仪表板,具有多区域集群的连续可用性,以及更安全地移动工作负载和数据。并在此视频中学习 Kubernetes 与 OpenShift 之间的差异

结束语及下一步

容器是未来的基石。它们不会是昙花一现,而是会持续发展。从更快地交付应用程序、加速开发到部署的流程,到降低基础架构和软件成本,容器为各种规模的企业创造了切实的业务成果。

在本系列文章中详细了解转移到容器的真正好处

本文翻译自:What are containers and why do you need them?(2020-09-24)