vmware container容器

容器:
应用程序的开发由于容器的出现发生了巨大的变化
在数据中心,传统应用程序通过现代应用程序功能和模型得到了增强。但是传统的应用程序开发与现代的应用程序开发是不同的。
传统应用程序的开发: 大而全(身份验证 安全 加密 负载均衡 高可用 网络通信等)
vmware container容器
瀑布式开发:瀑布式开发周期需要6到12个月才能交付一个产品,周期相对较长,所以需求有变化的风险,此外,最初的需求可能会被误解,但是这种误解可能只有在项目结束时才会被意识到
移交给运营团队:当产品准备好投入生产时,就移交给运营团队,运营团队从那时开始部署和管理软件,如果没有适当的培训和文档,团队会发现很难提高技能并有效的管理软件
单片应用程序:传统的应用程序被开发作为单个大型单片进程运行,大型指大量的功能和职责,通常,传统应用程序使用手动流程部署到单个VM,它们通常不会被设计成可伸缩的。惟一的选择是增加CPU、磁盘和内存以实现更高的性能。径向扩展 不能水平扩展
**独立的环境:**开发人员开始在他们的工作站上进行开发。最后,代码转移到测试、准备和生产环境。每个环境都是手动的配置,导致在所有相同的环境中进行相对大量的工作。每个环境创建不同的软件库、包和配置。这种变化给开发人员带来了问题,他们必须确定为什么应用程序在一个环境中工作,而在另一个环境中不工作。
环境之间会出现不一致。在登台期间不会出现生产问题。
现代应用程序的开发:
通常使用微服务:单片应用程序被分解成许多更小的独立模块架构。使开发人员在生成和更改代码时更容易创新的功能或服务。(微服务:功能1 服务1 功能2 服务2 不同的team负责不同模块的开发,一个应用环境分成六个模块开发 运行环境不同 把运行环境都打包在容器里面,一个team有一个容器,做成一个镜像去部署,彼此之间通过网络去通信 (HTTP/API)

总而言之就是把大而全的应用拆成若干个service,每个小的service自成一体。

  • 尽量缩短上市时间:

尽量缩短上市时间。简化将新代码部署到准备环境中进行测试的过程。几乎立即识别和解决bug。在生产环境中快速部署小的增量更改,如果出现问题,可以轻松地撤回。

  • 交付更新和特性

将快速构建、测试和发布新特性所需的时间最小化。

  • 提高产品质量,规避风险

自动化测试,获得用户反馈,并不断改进软件。

  • 更少的资源需求和更高的生产力。

在小的交互中应用持续的开发和持续的集成来减少劳动
vmware container容器
单片机体系结构 数据要改就得全都改
每个微服务应该负责系统的特定部分。在本例中,应用程序被分解为多个服务,包括UI和用户、订单和产品服务。每个服务都有自己的数据库。有了这个架构,每个服务都可以独立地伸缩。例如,在繁忙时间,可能需要扩展订单服务来处理高吞吐量。 对资源的需求更少
有更好的生产力 节省了故障排除的时间 更好的规避了风险
vmware container容器
容器:带有依赖项的应用程序
容器引擎:管理容器的运行时引擎
Docker: 这是公认的支持容器的运行时引擎,它经常被用作容器技术许多方面的同义词
容器的主机
运行容器和容器引擎的虚拟机或物理机
K8s: 一个容器的自动管理工具, 谷歌为容器开发了业务流程
容器结构:
vmware container容器
应用程序和应用程序运行所需要的这个文件全都打包在一起就构成了容器,容器是应用程序和依赖的二进制文件和库的封装。
比如说APP1有自己的库文件,只有APP1可以调用,都是隔离的运行环境,只有容器自己内部应用程序所依赖的os 或者lib文件,
应用程序与操作系统解耦,成为一个无服务器的函数。
软件开发人员普及容器的原因有:
●它们使编码变得更容易,无论是在本地还是在任何地方。
●可以在临时环境中快速部署和测试应用程序。不需要操作系统或负载。
vmware container容器
容器具有以下特性。
●容器可以在任何容器主机上运行,其操作系统内核与容器指定的操作系统内核相同。
●正在运行的容器使用其FQDN或其唯一的IP地址进行访问。
●在共享环境中,每个容器只能访问自己的资源。当您使用远程终端(如SSH)登录到容器时,您看不到其他容器在同一容器主机上运行的迹象

虚拟机和容器
vm提供来宾操作系统用于运行应用程序的虚拟硬件。多个应用程序运行在一个VM上,但是它们在逻辑上是分离和隔离的。对于容器,开发人员采用精简的基本OS文件系统,只在应用程序所依赖的必需的二进制文件和库上分层。
容器:轻量化 和app紧密的集成 engine:容器的引擎 部署很简单,从开发到部署都是一条龙的服务,
**和虚机比较:**比如说装数据库,要调各种各样的参数
虚机封装了整个操作系统,容器是跑在容器引擎上的,虚机是硬隔离,把物理硬件拆成了多个虚拟硬件,容器就是一套硬件,没有虚拟化,比如说红帽的系统,是软件层面上的隔离,应用程序的隔离,所以容器没有热迁移这一说,就是运行在某一个操作系统的进程,你不能把一个进程迁移到另一个操作系统上运行,容器如何dull掉了,就在别的主机上再开一个新的容器
不像虚机是在硬件层面做隔离的,虚机如果崩了,我的系统和软件可以直接在另一个主机上重启,因为只要提供相同的虚拟硬件,它在硬件层面上是漂移的,容器的系统和硬件是绑在一起的,容器的好处就是轻量的,改变了应用程序的开发和部署模式,更接近于应用端,更接近于开发人员,作为系统的架构来讲,去接触容器,需要一定的开发的基础。