05 | 白话容器基础(一):从进程说开去
张磊
该思维导图由 AI 生成,仅供参考
你好,我是张磊。今天我和你分享的主题是:白话容器基础之从进程说开去。
在前面的 4 篇预习文章中,我梳理了“容器”这项技术的来龙去脉,通过这些内容,我希望你能理解如下几个事实:
容器技术的兴起源于 PaaS 技术的普及;
Docker 公司发布的 Docker 项目具有里程碑式的意义;
Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。
紧接着,我详细介绍了容器技术圈在过去五年里的“风云变幻”,而通过这部分内容,我希望你能理解这样一个道理:
容器本身没有价值,有价值的是“容器编排”。
也正因为如此,容器技术生态才爆发了一场关于“容器编排”的“战争”。而这次战争,最终以 Kubernetes 项目和 CNCF 社区的胜利而告终。所以,这个专栏后面的内容,我会以 Docker 和 Kubernetes 项目为核心,为你详细介绍容器技术的各项实践与其中的原理。
不过在此之前,你还需要搞清楚一个更为基础的问题:
容器,到底是怎么一回事儿?
在第一篇预习文章《小鲸鱼大事记(一):初出茅庐》中,我已经提到过,容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这不就是 PaaS 最理想的状态嘛。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
容器技术是近年备受关注的一项技术,本文从进程的角度深入介绍了容器的基本原理。作者首先将容器比喻为一种沙盒技术,能够实现应用之间的隔离和便捷移动。文章详细介绍了进程的概念和运行原理,以及容器技术如何通过Cgroups和Namespace技术来约束和修改进程的动态表现,从而为其创造出一个“边界”。通过实际操作演示了如何使用Docker创建容器,并解释了Namespace机制的工作原理。总的来说,本文通过生动的比喻和实例,帮助读者理解了容器技术的基本原理,为后续深入学习和实践奠定了基础。文章还探讨了容器和虚拟机的对比,强调了Docker项目的轻量级虚拟化技术,并解释了Docker项目并没有真正的“Docker容器”运行在宿主机里面,而是通过Namespace参数为原应用进程创建了“隔离”环境。这样的讲解使读者更容易理解容器技术的本质。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》,新⼈⾸单¥68
《深入剖析 Kubernetes》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(170)
- 最新
- 精选
- atompi置顶下一讲:隔离与限制,会介绍Cgroups的2018-09-0350
- Hurt置顶为什么clone()时 还有线程呢 是写错了吗 还是有线程的启动啊
作者回复: 看得非常认真!严格说,clone()是线程操作,但linux 的线程是用进程实现的
2018-09-0317189 - 包子老师有个问题一直困扰,容器是一个单进程,那比如我有一个镜像里面集成了jdk, netstat, ping等,虽然这个容器启动时里面是一个java进程,但是我可以进到容器里面执行各种命令,比如netstat等,那这些命令在容器的运行过程中是在运行的吗?
作者回复: 是在运行的。但它们不受docker的控制,就像野孩子。所以单进程意思不是只能运行一个进程,而是只有一个进程是可控的。
2018-09-0315275 - blackpiglet1 用 namespace 框住app。 2 PID, UTS, network, user, mount, IPC, cgroup 虽然本质上理解,namespace 和 cgroup 是内核特性,容器本质上就是一个加了限定参数的进程,效果上看,图画的也没毛病。 这么看,是不是说容器的安全性,也就是隔离性,就是没办法达到虚拟机的级别呢?
作者回复: 没错,已经进门了哈
2018-09-039175 - 登高👍docker是没有上过历史课的进程
作者回复: 查水表!
2018-09-04696 - jssfy进一步,1. 如果容器镜像os支持某硬件的驱动,但是宿主机os如果不支持该硬件驱动的话,是否也白搭 2. 是否可以理解为 镜像只是提供了一套镜像文件系统中的各种文件,而各种内核相关的模块或者特性支持,完全依赖于宿主机?
作者回复: 说的没毛病。
2018-09-081090 - huan第一个问题,我感觉docker engine 最好虚线标识,表示他只是一种启动时用,运行时并不需要,真实进程是直接run在host os上
作者回复: 听起来不错哦
2018-09-0385 - 小崔在容器内,除了pid=1的进程,其他进程是不受docker控制的。 这个控制具体指什么呢?其他进程和pid=1的进程关系又是什么呢?
作者回复: 是你通过exec进去之后启动的后台进程,不受控制。控制指的是它们的回收和生命周期管理。
2018-09-04960 - balancer如果运行的容器是一个os ubuntu,那么在这ubuntu里面运行的进程,和这个ubuntu是什么关系 和主机OS是什么关系?谢谢
作者回复: 使用ubuntu里的文件,使用宿主机上的内核。
2018-09-07249 - Yuk亮镜像的运行对host os有要求吗? 比如打包的镜像原来的kernel和运行时的kernel不一致,又或者镜像的发行版是centos,能运行在host为ubuntu的机器上吗
作者回复: 只要应用本身对内核没要求,那就完全没问题
2018-09-0338
收起评论