0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Docker 提供一个基于 DotCloud 开源的LXC 的高级容器引擎

lhl545545 来源:脑极体 作者:脑极体 2020-09-25 16:55 次阅读

IT 史上有一个经典故事。那就是在 1943 年,IBM 的董事长老托马斯·沃森胸有成竹地告诉人们:未来 5 台计算机就可以满足全世界的市场。

现在我们知道,老沃森的预言有一半正在实现。就是世界正在朝着“5 台计算机”的方向演进,当然我们也知道,老沃森只是很认真地认为世界上用到计算机的地方并不太多,而不是预见到云计算的到来。

现在,云计算已经无处不在,数字世界成为我们的栖身之所。而近年来,一个名为“云原生”的概念成为云计算领域的热词。原本企业家们的对话可能是“你的公司业务上云了吗?”,而现在很多企业家要改口问下:“你的业务上了‘云原生’了吗?”

Gartner 报告曾指出,到 2020 年,将有 50%的传统老旧应用被以云原生化的方式改造,到 2022 年,将有 75%的全球化企业将在生产中使用云原生的容器化应用。在企业上云的趋势下,我们正在看到越来越多的企业和开发者开始把业务与技术向云原生演进。

那么,什么是“云原生”?为什么“云原生”正在变得越来越重要?我们希望通过对“云原生”概念和其代表的整体技术思路做一次梳理,看下“云原生”能够释放怎样的技术红利。

云原生与云原生应用

“云原生”,来自于 Cloud Native 的直译(其实叫原生云更顺口),拆开来看,Cloud 就是指其应用软件是在云端而非传统的数据中心。Native 代表应用软件从一开始就是基于云环境、专门为云端特性而设计,可充分利用和发挥云平台的弹性+分布式优势,最大化释放云计算生产力。

技术永远走在概念之前,在“云原生”概念正式提出以前,在企业中就已经有了云原生的实践。比如,谷歌在 2004 年就开始使用了容器技术,2006 推出的进程容器(Process Container),就是一种具有“云原生”特征的技术实践。

业界公认的“云原生”(Cloud Native)概念是 Pivotal 公司的 Matt Stine 于 2013 年首次提出,然后被一直沿用至今并发扬光大。

在 Matt 那里,他把云原生理解为一系列云计算技术和开发管理方法的合集,包括 DevOps、持续交付、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和 12 要素(The Twelve-Factor App)等等。

Docker 提供一个基于  DotCloud 开源的LXC 的高级容器引擎

所以,云原生从一开始就不是一项技术或一个产品,而是一种系统化的方法论和技术的集合。只有满足“上云”特征,或者说专门面向“云”设计的应用,才可以称之为云原生应用。

判断一个应用是否为云原生应用,就要考察它是否具有“云”的特性,包括满足网络访问、远端部署、可扩展弹性伸缩、共享、按需使用自助服务、高可用、可远程监控计费审计、标准化交付与位置无关等等。严格来讲,可以用 Matt 提出的“12 要素”来作为判断云原生应用的准则,其中最主要可以归纳为以下几点:

1、弹性:弹性计算正是云计算的核心特征,也是云原生技术中容器的重要特征。云原生应用弹性,应该包括应用使用资源的弹性和应用实例弹性扩展的弹性。在单实例扩展资源遭遇瓶颈时,可以配合负载均衡机制实现容器实例的弹性扩展。

2、共享:我们知道云计算可以分为 IaaS、PaaS、SaaS 三种类型,分别通过这三种类型实现资源共享、平台共享、应用共享。而云原生应用则是部署在 IaaS 或 PaaS 层,通过 SaaS 层提供开放式服务。

3、自治:云原生应用的交付一定是按照标准交付,可以在云端任何支持标准的位置部署,这样就与位置和环境无关,同时构建应用所需要的依赖包、配置文件和后端服务等都是和应用构成一个整体,实现自治管理。使用容器的好处就是可以使得应用以标准化镜像的方式交付和运行,而用微服务实现云原生应用,也正是符合这一自治原则的。

4、按需服务:云应用部署在云端,客户可以根据自己的需求,通过网络访问,自助使用服务,不需要联系云应用管理人员。通常会有个云应用服务目录,每个应用服务都有使用说明,通过服务目录可以找到适合自己满足自身需求的应用。

此外,像高可用性、敏捷、可监控审计、可配置等特性也都是云原生应用的重要特点,但不再赘述。

总之,云原生正是云计算区别于传统 IT 架构的根本特征,云原生应用正在成为云计算主流的服务形式。企业通过采用基于云原生的技术和管理方法而生成的应用,就能够持续地享受到“云计算”提供的源源不断地高效服务。

在探讨云原生应用的价值前,我们先简单了解下云原生主要使用的技术。

持续进化中的云原生技术

在云原生概念提出的 2013 年,Docker 也正式发布。Docker 的 PaaS 提供商 DotCloud 开源的一个基于 LXC 的高级容器引擎,帮助开发者把应用打包到容器中并进行发布,Docker 对于开发者来说,就如同用集装箱货轮来运输货物一样,效率又高、(容器如同集装箱)部署灵活性也比虚拟机更好,一经发布就成为极为流行的开源容器发布工具。

第二年,K8s(kubernetes)项目由 google 发布。在容器和 Docker 诞生之后,开发者自然而然需要工具来管理这些容器和容器化引擎。K8s 正是用来管理云平台中多个主机上的容器化的应用,让部署容器化的应用简单和高效。因为 K8s 也是采用了开源形式,发布之后也大受欢迎。

2015 年,由 Google、红帽、微软等大型云计算厂商以及一些开源公司,共同牵头成立了 CNCF 云原生基金会。CNCF 成立之初,就有 22 个创始会员,K8s 成为 CNCF 托管的第一个开源项目。CNCF 的目标就是致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。

在 2018 年,CNCF 对“云原生”的定义中,给出其代表性技术,包括容器、服务网格、微服务、不可变基础设施和声明式 API。在容器技术的普及中,Docker 实现了容器的可移植、轻量化、虚拟化,语言无关,大大降低了容器技术的使用门槛,而 K8s 则相当于安排容器发布的管家,解决了容器编排的全周期管理,就如同集装箱货轮上的船长一样。正是这一特性,K8s 也成为了应用上云的可移植性等问题,被成为云原生技术的基石。

(K8s 架构)

微服务是什么呢?与微服务相对应的传统的以系统为单位进行部署的单体架构,与之相比,微服务架构就是以独立的组件为单位进行部署,是用户可以感知最小功能集。微服务具有小而专的特性,使得开发、测试、更新效率提高,从而实现敏捷。从功能上看,微服务可以成为 Docker 的配合搭档,使得业务流程可以按需编排,实时部署。

服务网格( Service Mesh )是指用以处理服务与服务之间通信的基础设施层,解决了 K8s 在微服务的连接、管理和监控方面的短板,为 K8s 提供更好的应用和服务管理,成为微服务的辅助技术。而不可变基础设施相比较于之前的可变基础设施,具有更高的一致性和可靠性,以及更简单,更可预测的部署过程,成为云原生应用的运维的可靠基础架构,而声明式 API 这可以理解为是 k8s 的编码方式。

这些技术成为目前云原生应用主要利用的工具。当然,我们也看到云原生的技术边界和工具集合是处在不断变动和更新当中的。基于这些特性和工具的发展,我们看到云原生应用正在成为互联网巨头纷纷布局和转向的应用方式,也成为众多中小企业和开发者选择应用开发的方式。那么,云原生技术到底为何越来越重要,云原生应用正在发挥哪些价值呢?

云原生,企业数字化升级的全新生产力

在回答云原生的价值之前,我们先来问下,为什么企业的应用开发要原则上云,并选择云原生技术呢?

而这就涉及到传统的 IT 架构方式,将开发、IT 运营和质量保障分别设置,各自独立,开发与运营之间存在着信息“鸿沟”,开发人员希望基础设施更快响应,运营人员则要求系统的可靠性和安全性,而业务需求则是更快地将更多的特性发布给最终用户使用。这种被成为“瀑布式流程”的开发模式,一方面造成了开发上下游的信息不对称,一方面拉长了开发周期和调整难度。

但是随着用户需求的快速增加和产品迭代周期的不断压缩,原有的开发流程不再适合现实的需求,这时工程师们引入了一种新的开发模式——敏捷开发。但是,敏捷开发只是解决了软件开发的效率和版本更新的速度,还没有和运维打通。

出于协调开发和运维的“信息对称”问题,开发者又推出了一套新的方法——DevOps,DevOps 可以看作是开发、技术运营和质量保障三者的交集,促进之间的沟通、协作与整合,从而提高开发周期和效率。

最终实现的就是“持续交付”,让软件产品的产出过程在一个短周期内完成,保证软件可以稳定、持续的保持在随时可以发布的状况。

而云原生的容器、微服务等技术正是为 DevOps 提供了很好的前提条件,保证 IT 软件开发实现 DevOps 开发和持续交付的关键应用。换句话说,能够实现 DevOps 和持续交付,已经成为云原生技术价值不可分割的内涵部分,这也是无论互联网巨头企业,还是众多中小应用开发公司和个人,越来越多选择云原生技术和工具的原因。

基于云原生技术带给企业的应用开发的技术价值,直接来说就可以大幅降低企业 IT 开发和运维的成本,从而又提升企业业务的创新效率和产业价值。

对于外界而言,我们最直观的感受就是节假日前在 12306 抢票再也没有遇到系统崩溃,一些行政网站的体验也不那么差了,在购物节的流量高峰时,我们的页面也很少出现延迟或者刷不出来的情况了,而那些大型的在线直播、游戏的体验也很流畅了。而这些有时高达数以亿计的高并发流量都得益于云原生技术的快速弹性扩容来实现。

而对于企业而言,选择云原生技术,也就不仅仅是降本增效的考虑,而且还能为企业创造过去难以想象的业务承载量,对于企业业务规模和业务创新来说,云原生技术都正在成为全新的生产力工具。

过去企业看重的办公楼、厂房、IT 设施等有形资产,其重要性也逐渐被这些云端数字资产所超越,企业正通过云原生构建一个完整的数字孪生的新体系,而这才是云原生技术的真正价值所在。

对于整个云计算产业的发展本身来说,云原生区别于早先的虚拟机阶段,也完成了一次全新的技术生产力变革,就如同近代能源革命经历的水、煤、电的变革导致能量释放的密度和产业规模的数量级跃迁一样,云原生也是从云技术的应用特性和交付架构上进行了创新性的组合,能够极大地释放云计算的生产能力。

此外,云原生的变革从一开始自然而然地与开源生态走在了一起,也意味着云原生技术从一开始就选择了一条“飞轮进化”式的道路,通过技术的易用性和开放性实现快速增长的正向循环,又通过不断壮大的应用实例来推动了企业业务全面上云和自身技术版图的不断完善。

当然,企业业务的全面云原生化,并非一蹴而就的,企业业务的技术架构变革仍然要迎接很多的挑战,比如传统虚拟机模式下的运维习惯、原有的 IT 资产切换、人员的思维和管理方式变革等。不过,云原生所带来的种种好处,对于企业的未来业务发展的优势,已经成为众多企业的新共识。

可以预见,更多企业在经历了这一轮云原生的变革之痛后,能够穿越企业的原有成长周期,跨越到数字经济的新赛道,更好地活在即将到来的全面云化的数字时代。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 云计算
    +关注

    关注

    39

    文章

    7744

    浏览量

    137222
  • 容器
    +关注

    关注

    0

    文章

    494

    浏览量

    22049
  • 数字化
    +关注

    关注

    8

    文章

    8635

    浏览量

    61655
收藏 人收藏

    评论

    相关推荐

    容器云服务引擎是什么意思?

    容器云服务引擎是什么意思?容器云服务引擎种基于云原生架构的容器编排工具,能够帮助用户快速构建
    的头像 发表于 10-19 17:08 151次阅读

    容器云服务引擎是什么?如何使用

    容器云服务引擎(CloudContainerEngine,简称CCE),是企业级的Kubernetes集群托管服务,提供高度可扩展、高性
    的头像 发表于 09-30 10:17 165次阅读

    ARM平台实现Docker容器技术

    本帖最后由 Tronlong创龙科技 于 2024-7-26 08:51 编辑 什么是Docker? (1)Docker的架构Docker
    发表于 07-25 14:36

    ARM平台实现Docker容器技术

    本帖最后由 Tronlong创龙科技 于 2024-7-19 16:50 编辑 什么是Docker? (1)Docker的架构Docker
    发表于 07-17 11:05

    Jtti:Docker会替代调虚机吗

    Docker是计算虚拟化的种方式,和使用虚拟机进行虚拟化是类似的。由于近几年Docker技术的流行和发展。所以单独介绍Docker。首
    的头像 发表于 07-12 14:38 284次阅读
    Jtti:<b class='flag-5'>Docker</b>会替代调虚机吗

    关于Docker 的清理命令集锦

    这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下 复制代码代码如下: docker kill $(docker ps -a -q)  删除所有已经停止的容器 复制代码
    的头像 发表于 06-13 15:56 340次阅读

    容器怎么完成和容器引擎的映射

    Javascript与Java应用程序绑定在起,从而实现应用程序的自动化测试。 Docker 示例 docker run -d -p 宿主机端口:容器端口 镜像名 例如,要将
    的头像 发表于 06-06 15:18 333次阅读

    适合大学生的鸿蒙开发板-Purple Pi OH之安装Docker

    开放源代码的应用容器引擎,允许开发者打包他们的应用及依赖包到可移植的容器中,这个
    的头像 发表于 05-10 08:32 557次阅读
    适合大学生的鸿蒙开发板-Purple Pi OH之安装<b class='flag-5'>Docker</b>

    Docker容器技术的安装和使用

    通过Docker,开发人员可以更容易地构建、交付和运行应用程序,同时确保应用程序的致性和可移植性。它也使得应用程序的部署更加灵活和高效,因为它可以快速地启动、停止和扩展容器,而不会影响其他
    发表于 04-16 11:24 294次阅读
    <b class='flag-5'>Docker</b><b class='flag-5'>容器</b>技术的安装和使用

    Docker容器实现开机自动启动策略

    如果你的容器依赖于其他服务(例如数据库或其他容器),你需要确保这些服务在你的容器启动之前就已经可用。这可以通过编排工具如Docker Compose来管理,或者通过编写自定义的启动脚本
    的头像 发表于 03-11 10:33 2750次阅读

    ARM平台实现Docker容器技术

    什么是Docker? (1)Docker的架构 Docker开源的应用
    的头像 发表于 03-07 13:48 771次阅读
    ARM平台实现<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>技术

    TLT507-Docker容器部署方法说明

    TLT507-Docker容器部署方法说明
    的头像 发表于 01-26 09:49 439次阅读
    TLT507-<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法说明

    RK3568-Docker容器部署方法说明

    RK3568-Docker容器部署方法说明
    的头像 发表于 01-22 10:12 1304次阅读
    RK3568-<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法说明

    美格智能LXC容器化解决方案,轻松玩转多系统虚拟化

    美格智能LXC(Linux Container)容器化解决方案专为各类物联网终端设备设计,基于LXC内核,通过轻量化的容器技术,让应用程序可以在不同的环境中运行,可以满足智能汽车、机器
    的头像 发表于 01-17 17:16 545次阅读
    美格智能<b class='flag-5'>LXC</b><b class='flag-5'>容器</b>化解决方案,轻松玩转多系统虚拟化

    redis容器部署并用编程演示sb整合

    Redis 是开源的高性能的内存数据库,常用于缓存、会话管理和消息队列的存储。在容器化的架构中,使用容器部署 Redis 可以减轻运维负
    的头像 发表于 12-05 10:08 387次阅读