这一切都从包装开始。 例如,在工业开发中,需要对组装好的应用程序进行“打包”,以便将其以开发人员在自己的计算机上组装的形式传输到将要工作的服务器上,这样的“打包”应该作为一种保护。这消除了意外情况,例如应用程序在测试期间正常工作,但在转移到生产环境时中断。此外,“打包”将位于同一服务器上的一个应用程序与另一个应用程序隔离,这种隔离允许一个应用程序不干扰另一个应用程序的工作(例如:一个应用程序将无法接管所有服务器的 RAM,从而使第二次应用到其命运)。用微服务架构“封装”的优势尤其明显,这是可以理解的;有很多微服务——很多小应用程序必须相互通信,但同时又不应该相互干扰。一个例子是抽屉柜(服务器),里面有许多不同的抽屉,我们可以轻松地将不同的袜子从一个抽屉移到另一个抽屉,同时它们不会相互混合或与内裤混合。
![Docker、Kubernetes、OpenShift 是谁?它们之间有何关系? - 1]()
打包是由虚拟化工具创建的。曾几何时,虚拟机(VM)被用作“包装”。老人们会记得他们是如何在虚拟机中在 Vista 上部署 Windows XP 的。现在,用于应用程序打包的虚拟机已成为过去。世界已经被容器占领。因为它们:更轻、更高效、更安全。
更详细地说:容器与虚拟机有何不同? ![Docker、Kubernetes、OpenShift 是谁?它们之间有何关系? - 2]()
您需要记住容器的一些优点: • 体积更小(占用服务器内存更少);• 有权访问共享服务器资源(RAM、处理器计算时间);• 对其他环境具有更好的可移植性(从测试到工业);• 提供更高的启动速度(由于容器重量轻,因此启动速度更快)。
Docker 是容器之母。 当他们说容器时,他们指的是 Docker。Docker 是用于在容器化环境中自动部署和管理应用程序的软件。通过示例,Docker 是在线设计师和带有起重机的 3D 打印机的结合体。也就是说,他可以先为容器设计一个模板(图像),根据给定的条件(图像)打印(创建)容器,然后将其移动到需要的地方。使用 Dockerfile 代替杠杆。管理过程很简单:您编写文件、命令,运行它们,然后看看会发生什么。
初识Docker Docker Compose——升级版Docker 现在让我们看一下需要在一个位置运行多个容器的场景。用于此目的的实用程序是 Docker Compose。Docker Compose 是 Docker 附带的一个工具。它旨在解决与项目部署相关的问题。Docker 和 Docker Compose 之间的区别:Docker 用于管理单个容器。Docker Compose 用于同时管理多个容器。该工具提供与 Docker 相同的功能,但允许您使用更复杂的结构。
![Docker、Kubernetes、OpenShift 是谁?它们之间有何关系? - 4]()
使用 Docker Compose 的典型场景:假设您是一个 Web 项目的开发人员。该项目包括两个网站。第一个允许商务人士只需点击几下即可创建在线商店。第二个目标是客户支持。这两个站点与同一个数据库交互。你的项目越来越受欢迎,结果发现它运行的服务器的能力已经不够了。因此,您决定将整个项目移动到另一台机器上。如果您还没有使用过 Docker Compose 之类的东西,那么您将不得不一次迁移并重新配置一个容器,希望您在此过程中不会忘记任何事情。如果您使用 Docker Compose,那么将您的项目移动到新服务器是只需运行几个命令即可解决的问题。为了完成项目到新位置的转移,您只需进行一些设置并将数据库的备份副本上传到新服务器即可。典型的 DockerComposer:
![Docker、Kubernetes、OpenShift 是谁?它们之间有何关系? - 5]()
这里需要记住的是:
容器是“打包”应用程序的主要手段。Docker 处理容器、创建容器映像、拾取和移动容器。为了同时管理一堆容器,使用了 Docker Compose,它包含在 Docker 中。这些程序是免费软件(免费赠品 - 简而言之) Kubernetes (K8s) - Docker 自动化 因此我们部署了容器,我们知道如何将它们“批量”从一台机器传输到另一台机器。但突然有一个容器掉了下来!该怎么办?谁会再次提出这个问题?
![Docker、Kubernetes、OpenShift 是谁?它们之间有何关系? - 6]()
当然,您可以通过 Docker 手动执行此操作。但你必须做一些事情,写一些东西,你需要某种自动化工具。这就是 Kubernetes(简称 K8s)发挥作用的地方,它还将处理容器的管理和编排(相关实体的自动化管理)。有了 K8,您无需日夜监控容器。定义行为场景就足够了,K8s 会自己完成所有事情。Kubernetes 的主要特性 1. 提供可扩展性和配置管理。2.你可以描述部署集群时想要得到什么,K8s就会做到。例如指定
pod数量,为它们分配多少内存,表示在 pod 上部署(在容器中)的应用程序的副本(实例)数量。3. 负责维护系统处于某种状态;如果有东西掉落,那么K8s会根据既定的配置捡起它。这里您需要记住的是:
Kubernetes 是一个用于编排容器化应用程序的工具 - 在集群中自动部署、扩展和协调。支持主要的容器化技术,包括 Docker。K8s 是开源软件。
OpenShift 是虚拟化世界中的法拉利,酷、快、贵 。 聊完正题,让我们继续聊 OpenShift。
OpenShift是Kubernetes的一个附加组件,提供额外的功能 ,可以立即使用,不需要漫长而痛苦的配置,可以立即投入生产。看看 Kubernetes 上面有多少种不同的图标。他们每个人都做自己很酷的事情。
![Docker、Kubernetes、OpenShift 是谁?它们之间有何关系? - 8]()
OpenShift 的亮点: • 与 K8s 不同,它是付费产品;• 开箱即用的DevOps,支持基本的蓝/绿、金丝雀部署场景;• 内置Jenkins 支持;• 提供方便的工具来管理和使用集群;• 具有更严格的安全模型和内置监控。值得再次强调的是,与 Kubernetes 不同,OpenShift 是一款付费产品。不同之处在于:如果我们采用裸 Kubernetes,那么我们自己解决所有问题。如果我们谈论 OpenShift,它是红帽的产品,作为付费支持的一部分解决了新出现的问题。总结一下:
在工业开发中,需要对应用程序进行“封装”,这种方式在微服务架构中尤其重要。容器是封装应用程序的主要手段。Docker 处理容器、创建容器映像、拾取和移动容器。为了同时管理一堆容器,使用了 Docker Compose,它包含在 Docker 中。这些程序是免费软件。Kubernetes(K8s) 是一种用于编排容器化应用程序的工具 - 在集群中自动部署、扩展和协调。支持主要的容器化技术,包括 Docker。K8s 是开源软件。OpenShift 是 Kubernetes 的一个附加组件,提供额外的功能。与 K8s 不同,这是一款付费产品,供企业使用。提供开箱即用的 DevOps:支持主要部署场景蓝/绿、金丝雀,内置对 Jenkins 的支持,并提供用于管理和使用集群的便捷工具。拥有更严格的安全模型和内置监控。 对于那些渴望编码的人:
将 Spring Boot 应用程序打包到容器中 如何在 Docker 中部署 Postgres 并连接到 Spring-Boot 应用程序 网络研讨会:Docker - 如何使用容器?— Java 后端开发
GO TO FULL VERSION