《容器技术系列》一1.2 Docker总架构图

本节书摘来华章计算机《容器技术系列》一书中的第1章 ,第1.2节,孙宏亮 著, 更多章节内容可以访问云栖社区“华章计算机公众号查看。

1.2 Docker总架构图

作为Linux平台上的一种容器的管理引擎,Docker并不像其他大型分布式系统那样复杂。Docker的源码总量并不多,而且清晰的源码结构使得Docker的学习成本并不高。换言之,Docker源码的学习过程并不枯燥,我们可以从中学到很多东西,如Go语言的运用、Docker架构的设计原理等。Docker对用户而言是一个简单的C/S架构,用户通过客户端与服务器端建立通信,而Docker的后端是一个松耦合的架构,架构中的模块各司其职、有机组合,支撑着Docker运行。
Docker的总架构如图1-1所示。架构中主要的模块有:DockerClient、DockerDaemon、Docker Registry、Graph、Driver、libcontainer以及Docker Container。
对用户而言,Docker Client是与Docker Daemon建立通信的最佳途径。用户通过Docker Client发起容器的管理请求,请求最终发往Docker Daemon。
Docker Daemon作为Docker架构中的主体部分,首先具备服务端的功能,有能力接收Docker Client发起的请求;其次具备Docker Client请求的处理能力。Docker Daemon内部所有的任务均由Engine来完成,且每一项工作都以一个Job的形式存在。
Docker Daemon需要完成的任务很多,因此Job的种类也很多。若用户需要下载容器镜像,Docker Daemon则会创建一个名为“pull”的Job,运行时从Docker Registry中下载镜像,并通过镜像管理驱动graphdriver将下载的镜像存储在graph中;若用户需要为Docker容器创建网络环境,Docker Daemon则会创建一个名“allocate_interface”的Job,通过网络驱动networkdriver分配网络接口的资源……
libcontainer是一套独立的容器管理解决方案,这套解决方案涉及了大量Linux内核方面的特性,如:namespaces、cgroups以及capabilities等。libcontainer很好地抽象了Linux的内核特性,并提供完整、明确的接口给Docker Daemon。
当用户执行运行容器这个命令之后,一个Docker容器就处于运行状态,该容器拥有隔离的运行环境、独立的网络栈资源以及受限的资源等。


image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值