阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

什么是容器?

一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。

  • 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
  • 容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
  • 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

再来看看容器较为通俗的解释:

如果需要通俗的描述容器的话,我觉得容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样。我们现在所说的容器存放的东西可能更偏向于应用比如网站、程序甚至是系统环境。

阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

什么是Docker

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

说实话关于Docker是什么并太好说,下面我通过四点向你说明Docker到底是个什么东西。

  • Docker是世界领先的软件容器平台。
  • Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docke最初实现是基于LXC。
  • Docker能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。
  • 用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

为什么用Docker

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。

Docker 在如下几个方面具有较大的优势:

1.更快速的交付和部署

Docker在整个开发周期都可以完美的辅助你实现快速交付。Docker允许开发者在装有应用和服务本地容器做开发。可以直接集成到可持续开发流程中。

例如:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

2.高效的部署和扩容

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

Docker的兼容性和轻量特性可以很轻松的实现负载的动态管理。你可以快速扩容或方便的下线的你的应用和服务,这种速度趋近实时。

3.更高的资源利用率

Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

4.更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

Docker与虚拟机的区别

阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景
阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

比较上面两张图,我们发现虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重。

Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。

另外在调用宿主机的CPU、磁盘等等这些资源的时候,拿内存举例,虚拟机是利用Hypervisor去虚拟化内存,整个调用过程是虚拟内存->虚拟物理内存->真正物理内存,但是Docker是利用Docker Engine去调用宿主的的资源,这时候过程是虚拟内存->真正物理内存。

Docker 基本架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 主要有以下几部分组成:

  1. Docker Client 客户端
  2. Docker daemon 守护进程
  3. Docker Image 镜像
  4. Docker Container 容器
  5. Docker Registry 仓库

客户端和守护进程:

  • Docker是C/S(客户端client-服务器server)架构模式。
  • docker通过客户端连接守护进程,通过命令向守护进程发出请求,守护进程通过一系列的操作返回结果。
  • docker客户端可以连接本地或者远程的守护进程。
  • docker客户端和服务器通过socket或RESTful API进行通信。

Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类。

如图所示基本架构:

阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

1.Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。

2.Docker 容器(Container)

容器是独立运行的一个或一组应用。

3.Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API

4.Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

5.Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

6.Docker Hub

提供了庞大的镜像集合供使用。

7.Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

总之,Docker是一种轻量虚拟化的容器技术,提供类似虚拟机的隔离功能,并使用了一种分层的联合文件系统技术管理镜像,能极大简化环境运维过程,最后看看对应的应用场景。

Docker的应用场景

1. 作为云主机使用

相比虚拟机来说,容器使用的是一系列非常轻量级的虚拟化技术,使得其启动、部署、升级跟管理进程一样迅速,用起来灵活又感觉跟虚拟机一样没什么区别,所以有些人直接使用Docker的Ubuntu等镜像创建容器,当作轻量的虚拟机来使用。

2. 作为服务使用

如果你仅仅把Docker容器当作一个轻量的固定虚拟机用,那其实只能算是另类用法,Docker容器最重要价值在于提供一整套平台无关的标准化技术,简化服务的部署、升级、维护,只要把需要运维的各种服务打包成标准的集装箱,就可以在任何能运行Docker的环境下跑起来,达到开箱即用的效果,这个特点才是Docker容器风靡全球的根本原因。

  • Web应用服务
  • 持续集成和持续部署

3. 微服务架构使用

如果说上面两种应用场景还不足以体现出与传统的PaaS平台相比的巨大优势的话,那么对微服务的架构这种复杂又灵活的使用场景的无缝支持绝对具有革命意义。

微服务架构将传统分布式服务继续拆分解耦,形成一些更小服务模块,服务模块之间独立部署升级,这些特性与容器的轻量、高效部署不谋而合。


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国电网招聘 计算机岗位

1.解密2018国家电网校园招聘,院校、专业、待遇盲区统统扫除! 2018国家电网校园招聘国家电网作为国内乃至世界知名的企业集团,是令无数求职者心仪的工作单位。那么如何才能进国家电网工作呢?国家电网的待遇究竟有传说中的那么好吗&…

系统设计:github上学习如何设计大型系统的项目

https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md 系统设计是一个很宽泛的话题。在互联网上,关于系统设计原则的资源也是多如牛毛。这个仓库就是这些资源的组织收集,它可以帮助你学习如何构建可扩展的系统。

高并发编程系列:NIO、BIO、AIO的区别,及NIO的应用和框架选型

谈到并发编程就不得不提到NIO,以及相关的Java NIO框架Netty等,并且在很多面试中也经常提到NIO和AIO、同步和异步、阻塞和非阻塞等的区别。我先简短介绍下几个NIO相关的概念,然后再谈NIO重点掌握内容,以及Java NIO框架选型。 高并…

论文浅尝 | 基于神经网络的推理(DeepMind Relational Reasoning)

本文转载自公众号:徐阿衡。论文:A simple neural network module for relational reasoning(2017)github代码: https://github.com/siddk/relation-network这篇回顾下 DeepMind 2017 年发表的关系推理方面的工作,Relational Networks(RNs)。关…

拒绝无脑试错:写给萌新的“科学炼丹”入门手册

近期在订阅号后台和文章评论区review了一下大家的问题,发现很多小伙伴现在已经把机器学习、深度学习的理论基础打好了,但是真正要解决一个现实中的算法问题的时候经常两手抓瞎,一顿毫无目的乱试,甚至认为模型表现不好一定是调参不…

箱线图和散点图叠加图形的绘制——R language

前几日偶然从科学网上看到了一副特别漂亮的统计图形,如下图(摘自博文:http://blog.sciencenet.cn/blog-397960-456174.html)所示:感觉美翻了都,刚好在学习R,又遇到课题组有一些数据要处理,就花了大约一天的…

企业战略咨询方法:学习SWOT分析

文章目录概述分析目标分析内容分析步骤几个例子1. Mbalib网站的SWOT2. 复杂的、全面的SWOT分析3. 一个SWOT矩阵4. 另一个SWOT矩阵5. POWER SWOT分析法概述 SWOT分析是企业战略咨询常用的方法。然而,仔细搜索比对网上资料和各类管理咨询书籍,分析的目标、…

肖仰华 | 知识图谱与认知智能

本文转载自公众号:知识工场。肖仰华教授1万5千字雄文带您深度剖析知识图谱与认知智能,对知识图谱技术与落地应用中的一系列关键问题做了系统梳理与解答。肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识…

Spring Cloud的核心成员、以及架构实现详细介绍

微服务架构系列 高并发架构系列:服务注册与发现的实现原理、及实现优劣势比较 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别 阿里P8架构师谈:微服务技术架构、监控、Docker、服务治理等体系 阿里P8架构师谈:Dubb…

调参侠的自我修养——深度学习调参秘籍

这是一篇写给萌新的“科学炼丹”手册 前言 近期在订阅号后台和文章评论区review了一下大家的问题,发现很多小伙伴现在已经把机器学习、深度学习的理论基础打好了,但是真正要解决一个现实中的算法问题的时候经常两手抓瞎,一顿毫无目的乱试&am…

NLP通用模型decaNLP诞生,一个模型搞定十大自然语言常见任务

然而近日,Salesforce发布了一项新的研究成果:decaNLP——一个可以同时处理机器翻译、问答、摘要、文本分类、情感分析等十项自然语言任务的通用模型。Salesforce的首席科学家RichardSocher表示:我们的decaNLP就好比NLP领域的瑞士军刀&#xf…

咨询报告生成:使用python生成pptx格式的报告

已经有人做了,思路和自己想做的一个模式差不多,见模式一: 先做好ppt模板用python计算数据,生成图形用python调用模板,将图形插入pptx页面中,生成分析报告 模式二与模式一的差别在第三步:使用R…

产品技术人必备干货:产品开发流程(完整版)

产品技术开发流程 “ 产品开发流程涉及的人员从产品经理到设计师、前端、后端等等一系列人员,这篇文章主要关于产品开发的完整流程,希望对产品技术人员有一定的参考价值。 一:产品概念设计:MRD 产品开发流程步骤第一步&#xf…

论文浅尝 | 用异源监督进行关系抽取:一种表示学习方法

Citation: Liu, L., Ren, X., Zhu, Q., Zhi, S., Gui, H., Ji, H., & Han, J.(2017). Heterogeneous Supervision for Relation Extraction: A RepresentationLearning Approach. Retrieved from http://arxiv.org/abs/1707.00166动机现有的关系抽取方法严重依赖于人工标注…

SQuAD文本理解挑战赛十大模型解读

教机器学会阅读是近期自然语言处理领域的研究热点之一,也是人工智能在处理和理解人类语言进程中的一个长期目标。得益于深度学习技术和大规模标注数据集的发展,用端到端的神经网络来解决阅读理解任务取得了长足的进步。 转载:https://blog.cs…

万字长文,知识图谱构建技术综述

文章来源:丁香大数据 前言 知识图谱,即一种特殊的语义网络,它利用实体、关系、属性这些基本单位,以符号的形式描述了物理世界中不同的概念和概念之间的相互关系。为什么说知识图谱对于信息检索、推荐系统、问答系统中至关重要,我…

查理·芒格:分享12个顶级思维模型

网络资料整理,另见:https://blog.csdn.net/UFv59to8/article/details/79695476

技术如何转型产品经理

我知道很多做技术的朋友在积极寻找转型的机会,从程序员转型到产品经理,或者程序员转型到运营、市场等。 怎样转? 转型前后的心态等?有没有具体的方法或者步骤?也许本文能帮你理清不少思路。 做技术出身的朋友很多,最…

基于BERT的多模学习——VL-BERT篇

前言 BERT的出现让NLP发展实现了一个大飞跃,甚至有大佬说NLP已经没有可以做的啦,后面就是拼机器拼money了。但是,我认为任何领域的进步之后都会有更苛刻的要求,科研没有尽头,需求也永远无法满足。而多模态&#xff0c…

从程序员到阿里技术总监之路

第一步:高级研发工程师开始 掌握技术基础 技术语言基础和高级知识,常用算法、常用工具、框架原理、代码运行周期、内存回收机制等等,类似这些基础知识。 第二步:技术主管 需要掌握一定的项目管理常识,掌握一定的架构…