云原生 | Docker - [namespace & cgroups]

@

前置

Docker 的前身是 Google 的 LMCTFY,其前身是 LXC(Linux Container)
LXC 的功能基于 cgroups(Control Groups) 和 Linux namespace 实现
换句话说 namespace & cgroups 是 Docker 的基础

namespace

namespace 是命名空间
用最简单理解的例子说明的话,可以认为是有必要区分名字的空间。比如一个团队 7 个人,分别姓张王李刘赵孙杨,他们互相可以称呼小张、小王并可以相互区分开。如果这个团队又来了一个姓张的同学,那就需要从称呼上区分小张、老张,否则不知道说的具体是谁。
而作为对比,如果后面的老张没来这个组,而是去了隔壁组,那这两个组里都只有小张,而没有必要出现老张的称呼,除非隔壁组也已经有了一个小张

这大约就是命名空间的作用——一个空间下对一个概念的实例做出区分
团队里的所有人都属于同一个概念叫做同事,姓张的同事是这个概念的一个实例,我们用小张指代它,小王也是同理。当出现了一个另一个张姓同事后,我们已经有一个 "小张" 实例了,所以需要区分他俩为小张老张

用更本质一点的说法描述,不纠结它为什么起名叫 namespace,这东西的作用就是 隔离

Linux namespace 的作用是 提供系统资源的隔离,比如 进程、网络、文件系统
不同命名空间下,允许出现互相独立的 /root 目录,PID 同为 10086 的进程等
同一个命名空间下的进程可以互相感知,但跨命名空间的不行

posted @ 2025-05-21 11:08  问仙长何方蓬莱  阅读(25)  评论(0)    收藏  举报