文章插图
如何通俗的解释“Docker”?我家是搞养殖的,养了几十头羊,有的瘦小 , 有的强壮 。之前,所有羊在一个食槽里吃饲料,强壮的羊会挤兑瘦小的,不让其吃 。结果就是强壮的愈加强壮,瘦小的愈加瘦小 。为了解决这个问题,我为每头羊分配了一个食槽,每头羊只能在属于它的食槽吃饲料 , 去其他食槽吃就会挨打,一段时间后,每头羊便可以吃到为其分配的饲料,羊的长势也就比较均衡了 。
有人的地方就有江湖 , 羊也一样 。强壮的羊经常欺负瘦小的羊 , 导致瘦小的羊受伤,为了解决这个问题,我们将经常欺负弱小的羊单独圈起来,这样,对于它来说世界就只有它一头羊了,精力无处发泄,只能撞墙了 。原先的羊圈,欺负弱小的情形还在继续发生,理想的方法是为每头羊准备一个单独的羊圈,我将方法提出后,被家里以成本过高为由否决了 。
我们以进程类比羊,以操作系统类比羊圈,以资源类比饲料 。
进程A为了运行流畅,可能会无限申请内存及CPU时间,挤压了其他进程的资源,导致其他进程运行卡顿,用户就会认为其他软件用户体验差,进而卸载,这是非常不公平的 。操作系统的解决方法是可为每个进程分配固定的资源(内存、CPU运行时间等),进程不能使用额外的资源 。这就相当于为每头羊分配了一个食槽,里面放适合它的饲料 。在计算机中,这种技术叫CGroups 。
进程是可以看到其他进程的 , 也可以看到其他进程产生的文件 。进程可调用kill、rm杀死其他进程或删除属于其他进程的文件 。通过权限机制可缓解此问题,但是更好的方法是,进程只能看到属于自己的资源,进程想作恶,都不知道如何下手 。在计算机中,这种技术叫做Namespace,将进程放在一个独立的Namespace中,进程就只能看到属于它的资源了,相当于为每头羊准备一个单独的羊圈 。
通过CGroups和Namespace技术,进程只能使用固定的资源,并认为自己独享操作系统,这就是容器虚拟化技术 。
容器虚拟化技术是操作系统级虚拟化 。文件系统属于Namespace的一种,通过容器虚拟化技术,进程A使用Ubuntu16.04的文件系统 , 进程B使用Ubuntu22.04的文件系统,虽然二者使用的内核是同一个,但应用软件的行为(由软件、依赖库、配置文件等决定)分别与Ubuntu16.04和Ubuntu22.04一致,就可以认为 , 分别虚拟出了Ubuntu16.04和Ubuntu22.04操作系统 。
Docker整合了上述虚拟化技术 , 并提供了一系列工具,简化并自动化容器虚拟化技术使用流程 。风云际会 , 掀开了云原生时代的序幕 。
我写了一个称作docker.sh的小项目,该项目旨在通过一系列的实验使用户对docker的底层技术,如Namespace、CGroups、rootfs、联合加载等有一个感性的认识 。在此过程中,我们还将通过Shell脚本一步一步地实现一个简易的docker , 以期使读者在使用docker的过程中知其然知其所以然 。该项目的仓库地址如下:
https://github.com/pandengyang/docker.sh.githttps://gitee.com/pandengyang/docker.sh.git
可用于学习Docker原理,里面有Namespace、CGroups的原理及示例的介绍 。
Chrome OS上还有创新吗?或许有些让人难以置信,但不得不说谷歌的ChromeOS操作系统已经拥有将近10年的发展历史了 。这个基于Linux的云操作系统最初于2009年6月份发布,但首批商用设备直到2011年7月才开始发售 。近日外媒AndroidPolice的主编DavidRuddock发表了一篇名为“ChromeOShasstalledout”(ChromeOS已停滞不前)的评论文章,分享了他对该系统的看法 。
相关经验推荐
- 荨麻疹什么东西不能吃 荨麻疹多吃什么好
- 肺炎刮痧刮哪里图示 肺不好吃什么好呢
- 身上长小红点不痛不痒是什么原因
- goole搜索,goole搜索器
- 为什么晚上睡觉会出汗
- 节令在古代指什么
- 剪阴毛有什么用
- gpa gpa婚检
- 做整体衣柜用什么板材
- 洗脸后应该用什么擦呢