当前位置: 主页 > 名讲堂 >

98期:一张图描绘Docker总体架构

时间:2017-05-24 16:27     点击: 次    来源:中讯环亚旗下IT梦工场     微信:it-dream

 

  对于Docker,各位亲爱的小伙伴你们了解多少?Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。现今,Docker的前景被普遍看好。未来的云计算领域乃至整个IT世界,Docker都将成为不可或缺的重要角色。所以呢,如果你现在还对docker一无所知的话,咳,咳,达康书记会对你说:“这点儿警惕性都没有,GDP啥时候能搞上去?”

 

 

  今天的中讯讲堂,小梦将为大家描绘一幅Docker的总架构图~欢迎各位小主拿去尽情享用哦~

 

 

  作为Linux平台上的一种容器的管理引擎,Docker并不像其他大型分布式系统那样复杂。Docker的源码总量并不多,而且清晰的源码结构使得Docker的学习成本并不高。换言之,Docker源码的学习过程并不枯燥,我们可以从中学到很多东西,如Go语言的运用、Docker架构的设计原理等。Docker对用户而言是一个简单的C/S架构,用户通过客户端与服务器端建立通信,而Docker的后端是一个松耦合的架构,架构中的模块各司其职、有机组合,支撑着Docker运行。

  Docker的总架构如下图所示。架构中主要的模块有:Docker Client、DockerDaemon、Docker Registry、Graph、Driver、libcontainer以及Docker Container

 

Docker Client

  Docker Client是Docker架构中用户与Docker Daemon建立通信的客户端。

  对用户而言,Docker Client是与Docker Daemon建立通信的最佳途径。用户通过Docker Client发起容器的管理请求,请求最终发往Docker Daemon。

 

Docker Daemon

  Docker Daemon作为Docker架构中的主体部分,首先具备服务端的功能,有能力接收Docker Client发起的请求;其次具备Docker Client请求的处理能力。Docker Daemon内部所有的任务均由Engine来完成,且每一项工作都以一个Job的形式存在。

 

Docker Registry

  Docker Registry是一个存储容器镜像(Docker Image)的仓库。容器镜像(Docker Image)是容器创建时用来初始化容器rootfs的文件系统内容。Docker Registry把大量的容器镜像汇集在一起,并为分散的Docker Daemon提供镜像服务。

  Docker Daemon需要完成的任务很多,因此Job的种类也很多。若用户需要下载容器镜像,Docker Daemon则会创建一个名为“pull”的Job,运行时从Docker Registry中下载镜像,并通过镜像管理驱动graphdriver将下载的镜像存储在graph中;若用户需要为Docker容器创建网络环境,Docker Daemon则会创建一个名“allocate_interface”的Job,通过网络驱动networkdriver分配网络接口的资源……

 

Graph

  Graph在Docker架构中扮演着容器镜像保管者的角色。不论是Docker下载的镜像,还是Docker构建的镜像,都是由Graph统一管理着。

 

Driver

  Driver是Docker架构中的驱动模块。通过Driver驱动,Docker可以实现对Docker容器运行环境的定制。

 

libcontainer

  libcontainer是一套独立的容器管理解决方案,这套解决方案涉及了大量Linux内核方面的特性,如:namespaces、cgroups以及capabilities等。libcontainer很好地抽象了Linux的内核特性,并提供完整、明确的接口给Docker Daemon。

 

Docker Container

  Docker Container(Docker容器)是Docker架构中服务交付的最终体现形式。Docker通过Docker Daemon的管理,libcontainer的执行,最终创建Docker容器。

 

中讯环亚
中讯环亚
中讯环亚