您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
小白docker求入门!求大佬帮忙?
镜像,容器,进程小白docker求入门!求大佬帮忙?
发布时间:2016-12-08加入收藏来源:互联网点击:
回答于 2019-09-11 08:43:50
我家是搞养殖的,养了几十头羊,有的瘦小,有的强壮。之前,所有羊在一个食槽里吃饲料,强壮的羊会挤兑瘦小的,不让其吃。结果就是强壮的愈加强壮,瘦小的愈加瘦小。为了解决这个问题,我为每头羊分配了一个食槽,每头羊只能在属于它的食槽吃饲料,去其他食槽吃就会挨打,一段时间后,每头羊便可以吃到为其分配的饲料,羊的长势也就比较均衡了。
有人的地方就有江湖,羊也一样。强壮的羊经常欺负瘦小的羊,导致瘦小的羊受伤,为了解决这个问题,我们将经常欺负弱小的羊单独圈起来,这样,对于它来说世界就只有它一头羊了,精力无处发泄,只能撞墙了。原先的羊圈,欺负弱小的情形还在继续发生,理想的方法是为每头羊准备一个单独的羊圈,我将方法提出后,被家里以成本过高为由否决了。
我们以进程类比羊,以操作系统类比羊圈,以资源类比饲料。
进程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.git https://gitee.com/pandengyang/docker.sh.git
可用于学习 Docker 原理,里面有Namespace、CGroups的原理及示例的介绍。
上一篇:率土之滨有什么好的助手吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |