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

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

    关注

    38

    文章

    7344

    浏览量

    135702
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21876
  • 数字化
    +关注

    关注

    8

    文章

    7698

    浏览量

    60870
收藏 人收藏

    评论

    相关推荐

    ARM平台实现Docker容器技术

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

    docker容器有几种状态

    Docker 是一种流行的容器化平台,它能够帮助开发人员将应用程序和其依赖打包成一个独立的容器,并且能够在不同的环境中进行部署和运行。在 Docker 中,
    的头像 发表于 11-23 09:50 800次阅读

    docker核心组件有哪些

    Docker 是一种开源容器化平台,它能够实现将应用程序及其依赖项打包到一个可移植的容器中,从而实现快速、可重复、可扩展的部署和管理。Docker
    的头像 发表于 11-23 09:47 718次阅读

    docker进入容器的方法有哪些

    Docker是一种流行的容器化平台,它能够快速构建、交付和运行应用程序。在使用Docker时,我们经常需要进入容器进行调试、管理和运行命令等操作。本文将详细介绍
    的头像 发表于 11-23 09:45 3300次阅读

    Docker与虚拟机的区别

    的操作系统实例来实现虚拟化的技术。其实现方式是通过Hypervisor来实现的。Hypervisor是一个运行在物理机上的软件或硬件,负责管理和分配虚拟机的硬件资源。 1.2 Docker Docker是一种容器化技术,它利用L
    的头像 发表于 11-23 09:37 2273次阅读

    docker容器容器之间通信

    Docker是一种轻量级容器化技术,能够将应用程序及其依赖项封装在一个独立、可移植的容器中。而容器化的应用程序通常是以分布式方式设计的,因此实现容器
    的头像 发表于 11-23 09:36 541次阅读

    docker exec命令的使用方法

    Docker是一种开源容器化平台,可以让开发人员在容器中打包和运行应用程序。它提供了一种快速、可靠和一致的方式来构建、部署和运行应用程序。
    的头像 发表于 11-23 09:33 739次阅读

    docker容器删除后数据还在吗

    Docker作为一个容器化平台,提供了轻量级的虚拟化解决方案,能够方便地创建、部署和管理应用程序。然而,对于Docker容器的数据持久性是一
    的头像 发表于 11-23 09:32 645次阅读

    使用Docker容器编译OK3568源代码

    rksdkbuilder v1.1 e2fbcddfdb3c12 months ago 1.93GB 启动Docker容器 这里写了shell脚本,第次使用时可以直接执行,创建
    发表于 10-19 10:36

    VectorCAST|Docker场景下的代码白盒测试实施

    作者|吃井不忘挖水人小编|不吃猪头肉Docker简介Docker是一个开源的应用容器引擎,它可以实现让开发者打包他们的应用、依赖以及配置到一
    的头像 发表于 10-10 10:04 606次阅读
    VectorCAST|<b class='flag-5'>Docker</b>场景下的代码白盒测试实施

    如何使用 Docker容器化技术

    对于开发人员来说,Docker肯定都不陌生,今天小编带大家重新学习一下Docker。 什么是 Docker 官话: Docker 是一种开源
    的头像 发表于 09-30 11:24 1w次阅读

    docker基础知识和使用bmnnsdk时的docker常用命令

    生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同
    发表于 09-18 07:59

    VisionFive 2单板计算机成功支持Docker容器解决方案

    引言 Linux各种版本繁多,迭代频繁,不同版本之间难以兼容,给系统运维人员带来重重困难。有幸的是,Docker的迅速发展给这些问题提供标准化的解决方案。
    发表于 09-08 11:45

    OpenHarmony Docker移植实践

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony Docker简介 从操作系统诞生之日起,虚拟化技术就不断的演进与发展,结合目前云原生的发展态势,容器
    的头像 发表于 05-18 02:50 388次阅读
    OpenHarmony <b class='flag-5'>Docker</b>移植实践

    减少docker镜像大小的方法

    Docker 是一种容器引擎,可以在容器内运行一段代码。Docker 镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。
    的头像 发表于 05-15 11:13 578次阅读
    减少<b class='flag-5'>docker</b>镜像大小的方法