一文看懂Docker容器技术架构及其中的各个模块 (一文看懂东汉建立)

技术教程 2025-05-13 20:27:19 浏览
一文看懂Docker容器技术架构及其中的各个模块

一文看懂Docker容器技术架构及其中的各个模块

2019-09-29 08:32:08docker client 是docker架构中用户用来和docker daemon建立通信的get="_blank">客户端,用户使用的可执行文件为docker,通过docker命令行工具可以发起众多管理container的请求。

概述

今天主要简单介绍下docker的技术架构及其中组成的各个模块。

技术架构

一文看懂东汉建立

distribution 负责与docker registry交互,上传洗澡镜像以及v2 registry 有关的源数据

registry负责docker registry有关的身份认证、镜像查找、镜像验证以及管理registry mirror等交互操作。

image 负责与镜像源数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入、导出操作。

reference负责存储本地所有镜像的repository和tag名,并维护与镜像id之间的映射关系。

layer模块负责与镜像层和容器层源数据有关的增删改查,并负责将镜像层的增删改查映射到实际存储镜像层文件的graphdriver模块。

graghdriver是所有与容器镜像相关操作的执行者。

1、docker client

docker client 是docker架构中用户用来和docker daemon建立通信的客户端,用户使用的可执行文件为docker,通过docker命令行工具可以发起众多管理container的请求。

docker client发送容器管理请求后,由docker daemon接受并处理请求,当docker client 接收到返回的请求相应并简单处理后,docker client 一次完整的生命周期就结束了,当需要继续发送容器管理请求时,用户必须再次通过docker可以执行文件创建docker client。

2、docker daemon

docker daemon 是docker架构中一个常驻在后台的系统进程,功能是:接收处理docker client发送的请求。该守护进程在后台启动一个server,server负载接受docker client发送的请求;接受请求后,server通过路由与分发调度,找到相应的handler来执行请求。

docker daemon启动所使用的可执行文件也为docker,与docker client启动所使用的可执行文件docker相同,在docker命令执行时,通过传入的参数来判别docker daemon与docker client。

3、docker server

docker server在docker架构中时专门服务于docker client的server,该server的功能时:接受并调度分发docker client发送的请求,架构图如下:

在Docker的启动过程中,通过包gorilla/mux(golang的类库解析),创建了一个mux.Router,提供请求的路由功能。在Golang中,gorilla/mux是一个强大的URL路由器以及调度分发器。该mux.Router中添加了众多的路由项,每一个路由项由HTTP请求方法(PUT、POST、GET或DELETE)、URL、Handler三部分组成。

Engine是Docker架构中的运行引擎,同时也Docker运行的核心模块。它扮演Docker container存储仓库的角色,并且通过执行job的方式来操纵管理这些容器。

在Engine数据结构的设计与实现过程中,有一个handler对象。该handler对象存储的都是关于众多特定job的handler处理访问。举例说明,Engine的handler对象中有一项为:{“create”: daemon.ContainerCreate,},则说明当名为”create”的job在运行时,执行的是daemon.ContainerCreate的handler。

一个Job可以认为是Docker架构中Engine内部最基本的工作执行单元。Docker可以做的每一项工作,都可以抽象为一个job。例如:在容器内部运行一个进程,这是一个job;创建一个新的容器,这是一个job,从Internet上下载一个文档,这是一个job;包括之前在Docker Server部分说过的,创建Server服务于HTTP的API,这也是一个job,等等。

Job的设计者,把Job设计得与Unix进程相仿。比如说:Job有一个名称,有参数,有环境变量,有标准的输入输出,有错误处理,有返回状态等。

6、docker registry

Docker Registry是一个存储容器镜像的仓库。而容器镜像是在容器被创建时,被加载用来初始化容器的文件架构与目录。

在Docker的运行过程中,Docker Daemon会与Docker Registry通信,并实现搜索镜像、下载镜像、上传镜像三个功能,这三个功能对应的job名称分别为”search”,”pull” 与 “push”。

其中,在Docker架构中,Docker可以使用公有的Docker Registry,即大家熟知的Docker Hub,如此一来,Docker获取容器镜像文件时,必须通过互联网访问Docker Hub;同时Docker也允许用户构建本地私有的Docker Registry,这样可以保证容器镜像的获取在内网完成。

Graph在Docker架构中扮演已下载容器镜像的保管者,以及已下载容器镜像之间关系的记录者。一方面,Graph存储着本地具有版本信息的文件系统镜像,另一方面也通过GraphDB记录着所有文件系统镜像彼此之间的关系。Graph的架构如下:

其中,GraphDB是一个构建在SQLite之上的小型图数据库,实现了节点的命名以及节点之间关联关系的记录。它仅仅实现了大多数图数据库所拥有的一个小的子集,但是提供了简单的接口表示节点之间的关系。

同时在Graph的本地目录中,关于每一个的容器镜像,具体存储的信息有:该容器镜像的元数据,容器镜像的大小信息,以及该容器镜像所代表的具体rootfs。

Driver是Docker架构中的驱动模块。通过Driver驱动,Docker可以实现对Docker容器执行环境的定制。由于Docker运行的生命周期中,并非用户所有的操作都是针对Docker容器的管理,另外还有关于Docker运行信息的获取,Graph的存储与记录等。因此,为了将Docker容器的管理从Docker Daemon内部业务逻辑中区分开来,设计了Driver层驱动来接管所有这部分请求。

一文看懂东汉建立 9、libcontainer

libcontainer是Docker架构中一个使用Go语言设计实现的库,设计初衷是希望该库可以不依靠任何依赖,直接访问内核中与容器相关的API。

正是由于libcontainer的存在,Docker可以直接调用libcontainer,而最终操纵容器的namespace、cgroups、apparmor、网络设备以及防火墙规则等。这一系列操作的完成都不需要依赖LXC或者其他包。libcontainer架构如下:

另外,libcontainer提供了一整套标准的接口来满足上层对容器管理的需求。或者说,libcontainer屏蔽了Docker上层对容器的直接管理。又由于libcontainer使用Go这种跨平台的语言开发实现,且本身又可以被上层多种不同的编程语言访问,因此很难说,未来的Docker就一定会紧紧地和Linux捆绑在一起。而于此同时,Microsoft在其著名云计算平台Azure中,也添加了对Docker的支持,可见Docker的开放程度与业界的火热度。

10、docker container

Docker container(Docker容器)是Docker架构中服务交付的最终体现形式。

Docker按照用户的需求与指令,订制相应的Docker容器:

用户通过指定容器镜像,使得Docker容器可以自定义rootfs等文件系统; 用户通过指定计算资源的配额,使得Docker容器使用指定的计算资源; 用户通过配置网络及其安全策略,使得Docker容器拥有独立且安全的网络环境; 用户通过指定运行的命令,使得Docker容器执行指定的工作。


珍珠奶茶的做法有谁知道?

珍珠奶茶详细制作方法一包立顿红茶小半杯牛奶烧开水,把茶包放入杯中,倒入开水.拉动茶包,直到颜色变得很红.倒入加过热的牛奶.再拉动茶包,然后取出茶包珍珠奶茶就做好了,不过没有珍珠台湾珍珠奶茶技术配方原料:珍珠丸,有黑色、红色、橙色等多种珍珠奶茶粉,还有有香芋、橙香、荔枝、百果香、椰香等10多种口感,奶粗精,茶叶(袋装红茶、绿茶为佳)。 工具:烹煮器具、不锈钢锅、盆、勺、滤网、封口机、珍珠奶茶杯、珍珠奶专用吸管。 制作工具:雪克杯、盎司杯、咖啡勺、搅拌棒、密封罐、刨冰机、沙冰机、松饼机黑珍珠煮法:任取一种颜色的珍珠丸一公斤。 加入10公斤水在锅中烹煮(先烧开水再投珍珠丸粉圆,一定要等热水滚开了才可以用进去哦,不然马上就溶化成粉了。 中火保持水滚 用滤勺搅动。 时间15-20分钟(可依喜好软硬加减时间,煮得越久越软),时间到后盖上锅盖,熄火。 再焖15-20分钟(焖得越外久弹性越好)或煮至全部粉圆呈透明状态。 时间到后,捞出珍珠用凉水冲过.取一个大碗放入粉圆及加入白砂糖至浸泡珍珠,搅拌均匀后置约30分钟。 泡茶包:把60克茶叶(用袋装方便茶叶就不再包)放入3公斤水,用不锈钢锅或者普通锅熟煮,(先把水烧开90度以上再放茶叶)。 浸泡约10分钟--20分钟即可将茶包捞出,泡的茶叶略带清苦味,若太苦要加开水冲溶。 可以根据自己对茶浓度的要求来决定冲泡时间。 一般不建议过长时间冲泡,因为这会导致茶味过重,影响口感。 冷的珍珠奶茶用冰箱冰好茶汁.冰珍珠奶茶:在摇杯中放入30g奶精(二汤匙),2大匙果粉,一汤匙糖浆,加40g热水调匀后, 用搅拌棒调匀,加入红茶300mL~400m,再加满冰块3~4块,杯中约2/3体积,急速摇动雪克杯20次后.摇晃至杯内冰块全部溶化即可,让其起泡.最后加适量的珍珠20g即可调成一杯完美的冷的珍珠奶茶!取一只360ML的珍珠奶茶杯,把雪克杯倒入杯子中.插上吸管,交给顾客。 如需封口,则把奶茶放在封口机上,盖上封口膜,进行热压封口。 注意:奶茶和珍珠奶茶果粉的配比多少,直接影响到珍珠奶茶的口感、质量,奶精、奶茶粉放得多,珍珠奶茶的口感就好,成本也高,如果降低成本,可在其中添加白糖或其它香精、奶粉。 适量的奶粉对奶茶来说,起了点晴的作用,一旦奶粉过量,会使奶茶的味道变得有些腻口。 因此放奶粉时一定要注意用量,不要以为奶味越重越好喝。 注:制作果味珍珠奶茶方法同上,只需再杯中加添果粉2勺用500g水烧开加入750g糖,边加边搅拌,可得22oz(638mL)糖浆(也可直接换成蜂蜜)。 糖浆煮法:按1.5kg白砂糖配1kg水的比例煮开后,再小火熬10分钟后 熄火静置冷却即可。 原味奶茶的制作方法1.先将15公斤的水烧开至100度,倒入180克的茶叶,闷3-5分钟后,把茶叶捞出。 (茶叶可以再用,再煮的话煮5分钟左右)2.再加入1公斤白糖(1.8公斤糖浆,一公斤白糖加一公斤水),再加蜂蜜1公斤3.再加入1.3公斤奶精和1.4两巧克力果粉(巧克力板熬成巧克力酱也行)或(1.4两咖啡粉)搅拌匀,再煮5分钟就好了,如果是冰奶茶再冷藏,热的用保温瓶保温

PHP开发工程师岗位工作经历怎么写

自我评价(案例一)· 拥有良好的代码习惯,结构清晰,命名规范,逻辑性强,代码冗余率低,注重用户体验开发;· 有很强的事业心和进取精神,热爱开发工作,能承受较大的工作压力;· 具备很好的学习钻研能力,思路清晰,优秀的分析问题和解决问题的能力;· 严谨细致,有责任心,诚实守信,有良好的团队合作能力,工作责任心强。 自我评价(案例二)1.熟练掌握oop的编程思想和mvc的开发模式;2.熟练HTML/CSS/JavaScript,熟练使用ajax,jquery等技术;3.熟练ThinkPHP,Ci,Yii,Laravel等开源框架;4.熟练各种业务项目开发流程及模式;5.熟悉ECShop,Iwebshop,discuz的二次开发;6.熟悉svn,git等版本控制工具的安装配置以及使用;7.熟练使用 memcache ,redis,mongoDB等缓存技术;8.熟悉对象存储(oss)的上传下载;9.熟练单点登录和第三方登录技术;10.熟练各种接口的开发使用,如支付宝支付、短信接口、网络地图等;11.熟练app接口的开发,有独立编写接口的能力;12.熟悉微信公众号的开发;13.熟悉网站静态化:页面静态化和伪静态;14.熟悉常用的数据库优化技巧:索引,缓存,分区分表,sql优化等;15.熟悉服务器架构设计:主从复制,读写分离,动静分离,负载均衡等;16. 具有较强的团队意识,高度的责任感,工作积极严谨,勇于承担压力自我评价(案例三)从小生活在农村家庭,比较能吃苦耐劳,对编程感兴趣,有新的知识或技术出现的时候,会及时学习。 之前工作主要是与客户,物流,业务员以及厂内生产工作的沟通,沟通和协调能力很强。 平时喜欢打打篮球,喜欢团队合作的娱乐项目。 自我评价(案例四)在工作中,自学能力强,能够很容易的解决技术上遇到的问题,当技术上遇到一些新的技术,通过上网或是利用手头资料,技术上的问题都能迎刃而解,对新的技术有很强的求知欲和自主学习能力。 生活上,有责任心,团队的任务一定按时完成,心胸豁达,可以和周围的人融洽的相处。

国际上一般用什么方法淡化海水?

蒸馏法虽然是一种古老的方法,但由于技术不断地改进与发展,该法至今仍占统治地位。 蒸馏淡化过程的实质就是水蒸气的形成过程,其原旦如同海水受热蒸发形成云,云在一定条件下遇冷形成雨,而雨是不带的咸味的。 根据设备蒸馏法、蒸汽压缩蒸馏法、多级闪急蒸馏法等。 冷冻法冷冻法,即冷冻海水使之结冰,在液态淡水变成固态冰的同时盐被分离出去。 冷冻法与蒸馏法都有难以克服的弊端,其中蒸馏法会消耗大量的能源并在仪器里产生大量的锅垢,而所得到的淡水却并不多;而冷冻法同样要消耗许多能源,但得到的淡水味道却不佳,难以使用。 反渗透法通常又称超过滤法,是1953年才开始采用的一种膜分离淡化法。 该法是利用只允许溶剂透过、不允许溶质透过的半透膜,将海水与淡水分隔开的。 在通常情况下,淡水通过半透膜扩散到海水一侧,从而使海水一侧的液面逐升高,直至一定的高度才停止,这个过程为渗透。 此时,海水一侧高出的水柱静压称为渗透压。 如果对海水一侧施加一大于海水渗透压的外压,那么海水中的纯水将反渗透到淡水中。 反渗透法的最大优点是节能。 它的能耗仅为电渗析法的1/2,蒸馏法的1/40。 因此,从1974年起,美日等发达国家先后把发展重转向反渗透法。 反渗透海水淡化技术发展很快,工程造价和运行成本持续降低,主要发展趋势为降低反渗透膜的操作压力,提高反渗透系统回收率,廉价高效预处理技术,增强系统抗污染能力等。 太阳能法 人类早期利用太阳能进行海水淡化,主要是利用太阳能进行蒸馏,所以早期的太阳能海水淡化装置一般都称为太阳能蒸馏器。 馏系统被动式太阳能蒸馏系统的例子就是盘式太阳能蒸馏器,人们对它的应用有了近150年的历史。 由于它结构简单、取材方便,至今仍被广泛采用。 目前对盘式太阳能蒸馏器的研究主要集中于材料的选取、各种热性能的改善以及将它与各类太阳能集热器配合使用上。 与传统动力源和热源相比,太阳能具有安全、环保等优点,将太阳能采集与脱盐工艺两个系统结合是一种可持续发展的海水淡化技术。 太阳能海水淡化技术由于不消耗常规能源、无污染、所得淡水纯度高等优点而逐渐受到人们重视。 低温多效多效蒸发是让加热后的海水在多个串联的蒸发器中蒸发,前一个蒸发器蒸发出来的蒸汽作为下一蒸发器的热源,并冷凝成为淡水。 其中低温多效蒸馏是蒸馏法中最节能的方法之一。 低温多效蒸馏技术由于节能的因素,近年发展迅速,装置的规模日益扩大,成本日益降低,主要发展趋势为提高装置单机造水能力,采用廉价材料降低工程造价,提高操作温度,提高传热效率等。 多级闪蒸所谓闪蒸,是指一定温度的海水在压力突然降低的条件下,部分海水急骤蒸发的现象。 多级闪蒸海水淡化是将经过加热的海水,依次在多个压力逐渐降低的闪蒸室中进行蒸发,将蒸汽冷凝而得到淡水。 目前全球海水淡化装置仍以多级闪蒸方法产量最大,技术最成熟,运行安全性高弹性大,主要与火电站联合建设,适合于大型和超大型淡化装置,主要在海湾国家采用。 多级闪蒸技术成熟、运行可靠,主要发展趋势为提高装置单机造水能力,降低单位电力消耗,提高传热效率等。 电渗析法该法的技术关键是新型离子交换膜的研制。 离子交换膜是0.5-1.0mm厚度的功能性膜片,按其选择透过性区分为正离子交换膜(阳膜)与负离子交换膜(阴膜)。 电渗析法是将具有选择透过性的阳膜与阴膜交替排列,组成多个相互独立的隔室海水被淡化,而相邻隔室海水浓缩,淡水与浓缩水得以分离。 电渗析法不仅可以淡化海水,也可以作为水质处理的手段,为污水再利用作出贡献。 此外,这种方法也越来越多地应用于化工、医药、食品等行业的浓缩、分离与提纯。 压汽蒸馏压汽蒸馏海水淡化技术,是海水预热后,进入蒸发器并在蒸发器内部分蒸发。 所产生的二次蒸汽经压缩机压缩提高压力后引入到蒸发器的加热侧。 蒸汽冷凝后作为产品水引出,如此实现热能的循环利用。 流通电容吸附法露点蒸发法露点蒸发淡化技术是一种新的苦咸水和海水淡化方法。 它基于载气增湿和去湿的原理,同时回收冷凝去湿的热量,传热效率受混合气侧的传热控制。 水电联产水电联产主要是指海水淡化水和电力联产联供。 由于海水淡化成本在很大程度上取决于消耗电力和蒸汽的成本,水电联产可以利用电厂的蒸汽和电力为海水淡化装置提供动力,从而实现能源高效利用和降低海水淡化成本。 国外大部分海水淡化厂都是和发电厂建在一起的,这是当前大型海水淡化工程的主要建设模式。 热膜联产热膜联产主要是采用热法和膜法海水淡化相联合的方式(即MED-RO或MSF-RO方式),满足不同用水需求,降低海水淡化成本。 目前,世界上最大的热膜联产海水淡化厂是阿联酋富查伊拉海水淡化厂,日产海水淡化水量为45.4万立方米,其中,MSF日产水28.4万立方米,RO日产水17万立方米。 其优点是:投资成本低,可共用海水取水口。 RO和MED/MSF装置淡化产品水可以按一定比例混合满足各种各样的需求。 此外,以上方法的其他组合也日益受到重视。 在实际选用中,究竟哪种方法最好,也不是绝对的,要根据规模大小、能源费用、海水水质、气候条件以及技术与安全性等实际条件而定。 实际上,一个大型的海水淡化项目往往是一个非常复杂的系统工程。 就主要工艺过程来说,包括海水预处理、淡化(脱盐)、淡化水后处理等。 其中预处理是指在海水进入起淡化功能的装置之前对其所作的必要处理,如杀除海生物,降低浊度、除掉悬浮物(对反渗透法),或脱气(对蒸馏法),添加必要的药剂等;脱盐则是通过上列的某一种方法除掉海水中的盐分,是整个淡化系统的核心部分, 这一过程除要求高效脱盐外,往往需要解决设备的防腐与防垢问题,有些工艺中还要求有相应的能量回收措施;后处理则是对不同淡化方法的产品水针对不同的用户要求所进行的水质调控和贮运等处理。 海水淡化过程无论采用哪种淡化方法,都存在着能量的优化利用与回收,设备防垢和防腐,以及浓盐水的正确排放等问题。 海水淡化技术的发展与工业应用,已有半个世纪的历史,在此期间形成了以多级闪蒸、反渗透和多效蒸发为主要代表的工业技术。 专家普遍认为,今后三、四十年在工业应用上,仍将是这三项技术“唱主角”,但反渗透的比重将越来越大。 从地区上来讲,中东海湾国家仍将以多级闪蒸为首选,因为它具有大型化和超大型化(单台设备产水量目前已高达日产淡水4~5万吨)、适应于污染重的海湾水以及预处理费用低的优势;然而在中东以外地区将以反渗透或膜法为首选,因为膜法的能耗和成本都具有优势,以北美地区为例,近期的发展已经表明,在淡化和水处理方面都将以膜法为主。 做得最好的是以色列。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐