深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者
116705 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
再谈开源与社区 (1讲)
结束语 (1讲)
深入剖析 Kubernetes
15
15
1.0x
00:00/00:00
登录|注册

05 | 白话容器基础(一):从进程说开去

思考题
容器和虚拟机对比
Namespace技术
进程和容器
容器技术的基础
容器技术的发展
容器技术的兴起
容器技术知识关系脑图

该思维导图由 AI 生成,仅供参考

你好,我是张磊。今天我和你分享的主题是:白话容器基础之从进程说开去。
在前面的 4 篇预习文章中,我梳理了“容器”这项技术的来龙去脉,通过这些内容,我希望你能理解如下几个事实:
容器技术的兴起源于 PaaS 技术的普及;
Docker 公司发布的 Docker 项目具有里程碑式的意义;
Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。
紧接着,我详细介绍了容器技术圈在过去五年里的“风云变幻”,而通过这部分内容,我希望你能理解这样一个道理:
容器本身没有价值,有价值的是“容器编排”。
也正因为如此,容器技术生态才爆发了一场关于“容器编排”的“战争”。而这次战争,最终以 Kubernetes 项目和 CNCF 社区的胜利而告终。所以,这个专栏后面的内容,我会以 Docker 和 Kubernetes 项目为核心,为你详细介绍容器技术的各项实践与其中的原理。
不过在此之前,你还需要搞清楚一个更为基础的问题:
容器,到底是怎么一回事儿?
在第一篇预习文章《小鲸鱼大事记(一):初出茅庐》中,我已经提到过,容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这不就是 PaaS 最理想的状态嘛。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

容器技术是近年备受关注的一项技术,本文从进程的角度深入介绍了容器的基本原理。作者首先将容器比喻为一种沙盒技术,能够实现应用之间的隔离和便捷移动。文章详细介绍了进程的概念和运行原理,以及容器技术如何通过Cgroups和Namespace技术来约束和修改进程的动态表现,从而为其创造出一个“边界”。通过实际操作演示了如何使用Docker创建容器,并解释了Namespace机制的工作原理。总的来说,本文通过生动的比喻和实例,帮助读者理解了容器技术的基本原理,为后续深入学习和实践奠定了基础。文章还探讨了容器和虚拟机的对比,强调了Docker项目的轻量级虚拟化技术,并解释了Docker项目并没有真正的“Docker容器”运行在宿主机里面,而是通过Namespace参数为原应用进程创建了“隔离”环境。这样的讲解使读者更容易理解容器技术的本质。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(170)

  • 最新
  • 精选
  • atompi
    置顶
    下一讲:隔离与限制,会介绍Cgroups的
    2018-09-03
    50
  • Hurt
    置顶
    为什么clone()时 还有线程呢 是写错了吗 还是有线程的启动啊

    作者回复: 看得非常认真!严格说,clone()是线程操作,但linux 的线程是用进程实现的

    2018-09-03
    17
    189
  • 包子
    老师有个问题一直困扰,容器是一个单进程,那比如我有一个镜像里面集成了jdk, netstat, ping等,虽然这个容器启动时里面是一个java进程,但是我可以进到容器里面执行各种命令,比如netstat等,那这些命令在容器的运行过程中是在运行的吗?

    作者回复: 是在运行的。但它们不受docker的控制,就像野孩子。所以单进程意思不是只能运行一个进程,而是只有一个进程是可控的。

    2018-09-03
    15
    275
  • blackpiglet
    1 用 namespace 框住app。 2 PID, UTS, network, user, mount, IPC, cgroup 虽然本质上理解,namespace 和 cgroup 是内核特性,容器本质上就是一个加了限定参数的进程,效果上看,图画的也没毛病。 这么看,是不是说容器的安全性,也就是隔离性,就是没办法达到虚拟机的级别呢?

    作者回复: 没错,已经进门了哈

    2018-09-03
    9
    175
  • 登高
    👍docker是没有上过历史课的进程

    作者回复: 查水表!

    2018-09-04
    6
    96
  • jssfy
    进一步,1. 如果容器镜像os支持某硬件的驱动,但是宿主机os如果不支持该硬件驱动的话,是否也白搭 2. 是否可以理解为 镜像只是提供了一套镜像文件系统中的各种文件,而各种内核相关的模块或者特性支持,完全依赖于宿主机?

    作者回复: 说的没毛病。

    2018-09-08
    10
    90
  • huan
    第一个问题,我感觉docker engine 最好虚线标识,表示他只是一种启动时用,运行时并不需要,真实进程是直接run在host os上

    作者回复: 听起来不错哦

    2018-09-03
    85
  • 小崔
    在容器内,除了pid=1的进程,其他进程是不受docker控制的。 这个控制具体指什么呢?其他进程和pid=1的进程关系又是什么呢?

    作者回复: 是你通过exec进去之后启动的后台进程,不受控制。控制指的是它们的回收和生命周期管理。

    2018-09-04
    9
    60
  • balancer
    如果运行的容器是一个os ubuntu,那么在这ubuntu里面运行的进程,和这个ubuntu是什么关系 和主机OS是什么关系?谢谢

    作者回复: 使用ubuntu里的文件,使用宿主机上的内核。

    2018-09-07
    2
    49
  • Yuk亮
    镜像的运行对host os有要求吗? 比如打包的镜像原来的kernel和运行时的kernel不一致,又或者镜像的发行版是centos,能运行在host为ubuntu的机器上吗

    作者回复: 只要应用本身对内核没要求,那就完全没问题

    2018-09-03
    38
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部