范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Docker与k8s的恩怨情仇(三)后浪Docker来势汹汹

  上一节我们为大家介绍了Cloud Foundry等最初的PaaS平台如何解决容器问题,本文将为大家展示Docker如何解决Cloud Foundry遭遇的一致性和复用性两个问题,并对比分析Docker和传统虚拟机的差异。Docker相比于Cloud Foundry的改进
  利用"Mount Namespace"解决一致性问题
  在本系列文章的第一节中,我们提到Docker通过Docker 镜像(Docker Image)功能迅速取代了Cloud Foundry,那这个Docker镜像到底是什么呢,如何通过为不同的容器使用不同的文件系统以解决一致性问题?先卖个关子,我们先来看看上一节中说过隔离功能和Namespace机制。
  Mount Namespace,这个名字中的"Mount"可以让我们想到这个机制是与文件挂载内容相关的。Mount Namespace是用来隔离进程的挂载目录的,让我们可以通过一个"简单"的例子来看看它是怎么工作的。
  (用C语言开发出未实现文件隔离的容器)
  上面是一个简单的的C语言代码,内容只包括两个逻辑:
  1.在main函数中创建了一个子进程,并且传递了一个参数CLONE_NEWNS,这个参数就是用来实现Mount Namespace的;
  2.在子进程中调用了/bin/bash命令运行了一个子进程内部的shell。
  让我们编译并且执行一下这个程序:gcc -o ns ns.c ./ns
  这样我们就进入了这个子进程的shell中。在这里,我们可以运行ls /tmp查看该目录的结构,并和宿主机进行一下对比:
  (容器内外的/tmp目录)
  我们会发现两边展示的数据居然是完全一样的。按照上一部分Cpu Namespace的结论,应该分别看到两个不同的文件目录才对。为什么?
  容器内外的文件夹内容相同,是因为我们修改了Mount Namespace。Mount Namespace修改的是进程对文件系统"挂载点"的认知,意思也就是只有发生了挂载这个操作之后生成的所有目录才会是一个新的系统,而如果不做挂载操作,那就和宿主机的完全一致。
  如何解决这个问题,实现文件隔离呢?我们只需要在创建进程时,在声明Mount Namespace之外,告诉进程需要进行一次挂载操作就可以了。简单修改一下新进程的代码,然后运行查看:
  (实现文件隔离的代码和执行效果)
  此时文件隔离成功,子进程的/tmp已经被挂载进了tmpfs(一个内存盘)中了,这就相当于创建了完全一个新的tmp环境,因此子进程内部新创建的目录宿主机中已经无法看到。
  上面这点简单的代码就是来自Docker镜像的实现。Docker镜像在文件操作上本质是对rootfs的一次封装,Docker将一个应用所需操作系统的rootfs通过Mount Namespace进行封装,改变了应用程序和操作系统的依赖关系,即原本应用程序是在操作系统内运行的,而Docker把"操作系统"封装变成了应用程序的依赖库,这样就解决了应用程序运行环境一致性的问题。不论在哪里,应用所运行的系统已经成了一个"依赖库",这样就可以对一致性有所保证。
  利用"层"解决复用性问题
  在实现文件系统隔离,解决一致性问题后,我们还需要面对复用性的问题。在实际使用过程中,我们不大可能每做一个镜像就挂载一个新的rootfs,费时费力,不带任何程序的"光盘"也需要占用很大磁盘空间来实现这些内容的挂载。
  因此,Docker镜像使用了另一个技术:UnionFS以及一个全新的概念:层(layer),来优化每一个镜像的磁盘空间占用,提升镜像的复用性。
  我们先简单看一下UnionFS是干什么的。UnionFS是一个联合挂载的功能,它可以将多个路径下的文件联合挂载到同一个目录下。举个"栗子",现在有一个如下的目录结构:
  (使用tree命令,查看包含A和B两个文件夹)
  A目录下有a和x两个文件,B目录下有b和x两个文件,通过UnionFS的功能,我们可以将这两个目录挂载到C目录下,效果如下图所示:mount -t aufs -o dirs=./a:./b none ./C
  (使用tree命令查看联合挂载的效果)
  最终C目录下的x只有一份,并且如果我们对C目录下的a、b、x修改,之前目录A和B中的文件同样会被修改。而Docker正是用了这个技术,对其镜像内的文件进行了联合挂载,比如可以分别把/sys,/etc,/tmp目录一起挂载到rootfs中形成一个在子进程看起来就是一个完整的rootfs,但没有占用额外的磁盘空间。
  在此基础上,Docker还自己创新了一个层的概念。首先,它将系统内核所需要的rootfs内的文件挂载到了一个"只读层"中,将用户的应用程序、系统的配置文件等之类可以修改的文件挂载到了"可读写层"中。在容器启动时,我们还可以将初始化参数挂载到了专门的"init层"中。容器启动的最后阶段,这三层再次被联合挂载,最终形成了容器中的rootfs。
  (Docker的只读层、可读写层和init层)
  从上面的描述中,我们可以了解到只读层最适合放置的是固定版本的文件,代码几乎不会改变,才能实现最大程度的复用。比如活字格公有云是基于.net core开发的,我们将其用到的基础环境等都会设计在了只读层,每次获取最新镜像时,因为每一份只读层都是完全一样的,所以完全不用下载。
  Docker的"层"解释了为什么Docker镜像只在第一次下载时那么慢,而之后的镜像都很快,并且明明每份镜像看起来都几百兆,但是最终机器上的硬盘缺没有占用那么多的原因。更小的磁盘空间、更快的加载速度,让Docker的复用性有了非常显著的提升。Docker容器创建流程
  上面介绍的是Docker容器的整个原理。我们结合上一篇文章,可以总结一下Docker创建容器的过程其实是:启用Linux Namespace配置;设置指定的Cgroups参数;切换进程的根目录联合挂载各层文件题外:Docker与传统虚拟机的区别
  其实Docker还做了很多功能,比如权限配置,DeviceMapper等等,这里说的仅仅是一个普及性质的概念性讲解,底层的各种实现还有很复杂的概念。具体而言,容器和传统的虚拟机有啥区别?
  其实容器技术和虚拟机是实现虚拟化技术的两种手段,只不过虚拟机是通过Hypervisor控制硬件,模拟出一个GuestOS来做虚拟化的,其内部是一个几乎真实的虚拟操作系统,内部外部是完全隔离的。而容器技术是通过Linux操作系统的手段,通过类似于Docker Engine这样的软件对系统资源进行的一次隔离和分配。它们之间的对比关系大概如下:
  (Docker vs 虚拟机)
  虚拟机是物理隔离,相比于Docker容器来说更加安全,但也会带来一个结果:在没有优化的情况下,一个运行CentOS 的 KVM 虚拟机启动后自身需要占用100~200MB内存。此外,用户应用也运行在虚拟机里面,应用系统调用宿主机的操作系统不可避免需要经过虚拟化软件的拦截和处理,本身会带来性能损耗,尤其是对计算资源、网络和磁盘I/O的损耗非常大。
  但容器与之相反,容器化之后的应用依然是一个宿主机上的普通进程,这意味着因为虚拟化而带来的损耗并不存在;另一方面使用Namespace作为隔离手段的容器并不需要单独的Guest OS,这样一来容器额外占用的资源内容几乎可以忽略不计。
  所以,对于更加需要进行细粒度资源管理的PaaS平台而言,这种"敏捷"和"高效"的容器就成为了其中的佼佼者。看起来解决了一切问题的容器。难道就没有缺点吗?
  其实容器的弊端也特别明显。首先由于容器是模拟出来的隔离性,所以对Namespace模拟不出来的资源:比如操作系统内核就完全无法隔离,容器内部的程序和宿主机是共享操作系统内核的,也就是说,一个低版本的Linux宿主机很可能是无法运行高版本容器的。还有一个典型的例子就是时间,如果容器中通过某种手段修改了系统时间,那么宿主机的时间一样会改变。
  另一个弊端是安全性。一般的企业,是不会直接把容器暴露给外部用户直接使用的,因为容器内可以直接操作内核代码,如果黑客可以通过某种手段修改内核程序,那就可以黑掉整个宿主机,这也是为什么我们自己的项目从刚开始自己写Docker到最后弃用的直接原因。现在一般解决安全性的方法有两个:一个是限制Docker内进程的运行权限,控制它值能操作我们想让它操作的系统设备,但是这需要大量的定制化代码,因为我们可能并不知道它需要操作什么;另一个方式是在容器外部加一层虚拟机实现的沙箱,这也是现在许多头部大厂的主要实现方式。小结
  Docker凭借一致性、复用性的优势战胜了前辈Cloud Foundry。本文介绍了Docker具体对容器做的一点改变,同时也介绍了容器的明显缺点。下一篇文章,我们会为大家介绍Docker又是如何落寞,而后Docker时代,谁又是时代新星。敬请期待。

鸿蒙,除了胜利无路可走华为,中国企业影响世界的突破口(二)六中国为什么到了华为,才算产生了世界级的企业其实,对比日韩崛起,就会发现中国到了产生世界级龙头企业的阶段,甚至已经晚了。日本是在50年代末经济起飞,八十年代产生的世界级企业巨头。索周线平衡需求,比特币平淡过周末大家好,我是K神,只喜欢研究K线,朋友都叫我K线狂魔,你们可以叫我老K。K神说昨天市场表现尚可,主动拉了一下短期均线,虽然没有变成金叉,但至少态度比较诚恳。消息动态1。四川虚拟货币华为正式获得高通芯片供货,新平板已使用,那台积电何时恢复?高通获得美国商务部的自由许可,只限制于4G和WIFI芯片,而5G芯片的许可是没有申请到,因此这个获得高通芯片许可的成色可就差了许多!换句话说,高通的芯片只能供应4G手机和移动设备使汉马H7换电重卡助力公铁绿链守护首都蓝天来源中国交通新闻网在北京密云威克矿山区内,北京公铁绿链多式联运股份有限公司(简称公铁绿链)携手汉马科技大力推广新能源重卡,绿色环保节能减排的同时,也为企业创造了更大的价值。汉马H7为什么会有越来越多的人选择小米产品为什么越来越多的人选择小米这个话题可以分为好几个方面来说。小米从最早刚出MIUI的时候就已经接触了,当时诺基亚并未拉胯,iphone和HTC还在称霸。MIUI主打为发烧而生小米第一又是黑客?全球最大肉类加工商遭网络攻击,多座工厂关停,工人被迫停工据央视新闻报道,当地时间6月1日,美国食品与商业工人联合会(UnitedFoodCommercialWorkers)表示,全球最大肉食品加工商JBS公司因遭到网络攻击,其在美牛肉加618买realme的哪款手机最划算?有哪些产品推荐?这次618realme的机型又和往年一样,全都是顶配版性价比惊人。比如realmeGT,将骁龙888直接拉到了2999价位,而且不是8128的版本,而是12256的版本。这个价格竞新手维修显卡多看多学多练自己的电脑一直用的好好的,挂暗黑三连续一个月没关过机。月卡时间到了终于不用挂机了可以让电脑休息休息,第二天开机开不了机。拆开电脑检查一番,还是无法开机,主板启动开机后CPU风扇也停江特电机,士兰微,露笑科技,金种子酒,长电科技,太极实业加油吉祥股份是锂电池概念。恒宝股份是数据安全概念。金证股份是数字经济概念。太极实业是集成电路概念。金种子酒是华润入股的白酒概念股。元隆雅图是网红经济概念。浪潮软件是工业互联网概念。江特40年手机变迁史,用过前三款的都是土豪,当然他们也真的老了手机的前身其实是无线电话,在1902年,由一个叫做内森斯塔布菲尔德的美国人发明。1938年,美国贝尔实验室为美国军方开发出第一部移动电话手机。重点来了1973年4月,美国摩托罗拉公终于等到你!FindX5Pro全面体验,4K超清夜景视频还能这么拍上周,OPPO正式发布了开年旗舰OPPOFindX5系列。新机凭借在外观配置影像各方面的全面升级,不仅得到了国内广大消费者的青睐,更是吸引到了海外众多媒体博主的关注,譬如国际知名权
昨夜,微软将AI平民化点几下鼠标,草图就能变App智东西(公众号zhidxcom)作者ZeR0编辑漠影智东西5月25日报道,和前两年一样,今年微软Build开发者大会再度以虚拟方式举行,并由微软董事长兼CEO萨提亚纳德拉发表开场演影响出行屡遭吐槽共享单车成牛皮癣新宿主5月24日9时许,北京市朝阳区将台地铁站口,停满了密密麻麻的共享单车。一些共享单车的车筐里车身处,被贴满了各种小广告24小时美女服务公积金提取租房代开发票私密会所京牌指标这时正值上为什么更爱风炉烤箱?长帝大白鲸F40烤箱评测体验一入烘焙深似海hello!大家好!我是LEO,一名美食爱好者。作为烹饪各种美食的电器中,当然少不了一台烤箱,不仅能做面包蛋糕,也可以烤各种美食。那烤箱要怎么选呢?对于烤箱,LEO最关于战术耳机,一个小白的自白早年前在欧美大片里看到大兵们老是带着一个硕大的耳机,单纯以为只是通信功能的玩意,无非带个MIC。虽然看起来挺酷的但是到了热天或者是天气炎热的地带,头上老戴个这玩意不是遭罪么?后来了关注恒大汽车无限期推迟电动汽车预售,官方暂未回应文懂车帝原创李德喆懂车帝原创行业5月18日下午,多家国内媒体报道,恒大汽车无限期推迟电动汽车预售。恒大汽车无限期推迟电动汽车预售懂车帝也针对此车向恒大汽车求证,截至发稿时对方暂未回曼德拉效应越发明显,人类被集体改了记忆?还是有平行宇宙?在量子力学中,有一个实就涉及了平行宇宙,你们知道是什么吗?没错,就是薛定谔的猫,但是有一种社会现象曼德拉效应,可能也涉及平行宇宙。你记忆中的曼德拉是什么时候死亡的呢?这种社会现象是将Python打包成exe应用程序(含flask静态目录)的操作方法一。Pyinstaller使用指南1。简介Pyinstaller是Python的打包工具,将源码。py生成exe执行文件,然后将exe文件部署到目标主机上即可,本文以windows世界知名学术期刊东南亚人遗传基因可能来自青藏高原的丹尼索瓦人法国科学家在老挝洞穴中发现一颗至少有13万年历史的女童牙齿,为科学家提供了东南亚地区古人类进化和迁徙的更多线索。世界著名学术期刊自然通讯17日刊登了法国国家科学研究中心研究人员等多人类的起源是什么?有什么奥秘?关于人类的神创起源,最终被推翻,很多信仰基督教的人,以及我国信仰佛教的人,都认为人是上帝所创造的,神创论一直在人们心目中根深蒂固,因此很多人都特别信仰神灵,但是达尔文的出现彻底推翻想给家里长辈买一台新手机,逛了一圈,618这几款值得留意转眼间,又快到2022年的618大促了,智能手机作为每年618期间的热门消费电子产品,今年预计也会迎来一波热销潮,除了年轻人庞大的换机需求以外,很多年轻人也会在这时候为父母选择一款腾讯游戏开发精粹II1。2基于照片的角色捏脸流程内容简介腾讯游戏开发精粹是腾讯游戏研发团队不断积累沉淀的技术结晶,是继2019年推出腾讯游戏开发精粹后的诚意续作。本书收录了21个在上线项目中得到验证的技术方案,深入介绍了腾讯公司