周志明的软件架构课
周志明
博士,远光软件研究院院长,《深入理解 Java 虚拟机》《凤凰架构》等书作者
54203 人已学习
免费领取
课程目录
已完结/共 74 讲
架构师的视角 (24讲)
周志明的软件架构课
15
15
1.0x
00:00/00:00
登录|注册

46 | 容器的崛起(上):文件、访问、资源的隔离

你好,我是周志明。接下来的两节课,我会以容器化技术的发展为线索,带你从隔离与封装两个角度,去学习和了解容器技术。
今天,我们就先来学习下 Linux 系统中隔离技术的发展历程,以此为下节课理解“以容器封装应用”的思想打好前置基础。

隔离文件:chroot

首先要知道,人们使用容器的最初目的,并不是为了部署软件,而是为了隔离计算机中的各类资源,以便降低软件开发、测试阶段可能产生的误操作风险,或者是专门充当蜜罐,吸引黑客的攻击,以便监视黑客的行为。
容器的起点呢,可以追溯到 1979 年Version 7 UNIX系统中提供的 chroot 命令,这个命令是英文单词“Change Root”的缩写,它所具备的功能是当某个进程经过 chroot 操作之后,它的根目录就会被锁定在命令参数所指定的位置,以后它或者它的子进程就不能再访问和操作该目录之外的其他文件。
1991 年,世界上第一个监控黑客行动的蜜罐程序就是使用 chroot 来实现的,那个参数指定的根目录当时被作者被戏称为“Chroot 监狱”(Chroot Jail),而黑客突破 chroot 限制的方法就叫做 Jailbreak。后来,FreeBSD 4.0 系统重新实现了 chroot 命令,把它作为系统中进程沙箱隔离的基础,并将其命名为FreeBSD jail
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

容器的崛起(上):文件、访问、资源的隔离 本文介绍了容器技术的起源和发展历程。首先介绍了chroot命令的出现和发展,以及其在隔离文件方面的作用。随后讲解了Linux Namespaces的引入,以及其在隔离访问方面的作用。最后介绍了cgroups在隔离资源方面的应用。这些技术不仅是容器化技术的基础,也成为了现代Linux操作系统中不可或缺的基石。理解这些基础知识对于学习和掌握容器应用至关重要。读者还被引导思考Docker的起源和在不同操作系统中的应用情况。文章内容丰富,涵盖了容器技术的基础知识和发展历程,对读者快速了解容器技术具有重要意义。

该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • Helios
    说到容器不得不提的就是docker了,在2013年左右docker达到了炙手可热的程度,拒绝微软的天价收购,几乎就成为容器的事实标准,无人能敌。 谷歌红帽等公司不能坐以待毙,就开始了老手段“定标准”为了不让你垄断,但是不得不说谷歌拥有世界上最多在软件上的开发者以及吸引他们来的困难场景。只要标准定了,他一定能实现的又好又快。 但是docker就是不同意就是敷衍呀,所以各大公司觉得不行了,先不在容器真的低级别上角逐了,搞上层编排调度,毕竟娶媳妇要的不是砖是房子,编排系统的目标是最快的给你来个房子,房子的组成有砖。 就这样2014年出现了编排引擎争霸的地步,什么mesos,swarm等等都出来了,但是k8s一出来就让其他系统感觉自己是村里人进城一样。最终所谓云原生的核心技术没有悬念的回归谷歌手里
    2021-03-10
    24
  • zhanyd
    Docker也能用于Windows系统,Windows系统中也有文件、访问、资源的隔离手段,和linux系统对比如下: Window Server Container 用到的技术: Control Groups: job objects Namespaces: Object Namespace,Process Table,Networking Layer Capabilities: Registry,Union like filesystem extensions Linux Container 用到的技术: Control Groups: cgroups Namespaces: Pid,net,ipc,mnt,uts Layer Capabilities: Union Filesystems: AUFS,btrfs,vfs,zfs*,DeviceMapper
    2021-03-11
    1
    13
  • neohope
    Windows的容器还是太重了,镜像超级大,而且优先支持微软自己的技术栈。这么重,加之不成熟,现在对上服务器虚拟化的各类成熟方案,实在没啥优势可言。 WindowsServer从设计上来讲,模块化做的比linux要差一些,内核做的事情也太多,早期类库变化也过于剧烈,类库前后兼容性也不算好。加之之前主推的技术,生命周期都太短,自家技术代与技术代之间没有传承,闭源得不到社区支持,开源服务端软件,在linux上性能,往往吊打windows。 而且即使是windows的虚拟化软件,微软自家做的也不是最好的。vmware和virtualbox多香。 微软唯一让我感到惊艳了一次的,还是wsl,但总归功能差了些,性能差了些。我倒是觉得,把wsl做好,可以同时支持win和linux容器,windows可能更有机会一些。 再后面,就是微软家生态的事情咯。其实微软做的很多理念,都挺超前的,而且也开始与社区合作。但微软,啥都要自己造轮子,技术延续性差又不断要大家换轮子,又没有强援,做生态挺难的。 看下linux和java,一个轮子能用多少年。看一下苹果,也是闭源,也是自己造轮子,还要交保护费,但苹果也不要你三五年就把轮子换了啊,而且保护费不是白交啊。远了远了。。。
    2021-04-14
    5
  • 李二木
    namespaces 和 cgroups 对资源访问与资源配额的隔离,是容器化技术的基础。
    2021-03-21
    1
  • longslee
    谢谢周老师普及容器前世今生,网上文章基本都是现代容器的使用,没看到讲这部分的。
    2021-03-13
    1
  • GaopanQi
    感谢老师的分享,对容器技术的前世今生有了更加全面的了解。对于windows服务器版本来说,微软也提供了对应的windows容器,我理解微软应该提供了不同“类型”(可能应该叫功能范围)的windows容器基础镜像,这样大家采用和docker类似的机制来打包。微软提供了windows,windows core和IOT类型,这里说说我对windows的理解,应该是虚拟了一套windows的API,比如文件管理,进程管理,服务,以及用户组等。
    2021-03-10
    1
  • 松小鼠
    第一次见能把容器镜像讲这么清楚的文章,谢谢分享。
    2021-03-10
    1
  • Jxin
    1.感觉不是Linux的专属。在被k8s打的节节败退时,完美兼容win平台曾时docker公司的一大战略目标,虽然兼容后也没挽回颓势。不过win平台确实可以轻便的使用docker,所以算不得Linux专属。毕竟这证明win的硬件基础搭载了docker容器需要的指令集,哪怕这是在Win上开了个unix内核的宿主机系统来挂的docker容器。 2.Windows有,至少大家都可以玩虚拟机。 3.没用过Windows 版本的容器,理论上可以。
    2021-03-11
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部