【读书笔记】05 | 白话容器基础(一):从进程说开去

《深入剖析Kubernetes - 05 | 白话容器基础(一):从进程说开去》


容器的实现主要应用了namespace 和 cgroups 的机制


其中namespace的实现,实际上就是在底层调用clone() 时,加一个CLONE_NEWPID 参数,为进程创建一个新的namespace,屏蔽其他进程pid,使其看不到宿主机上真正的进程空间,从而认为自己就是pid 1 的主进程


int pid = clone(main_function, stack_size, CLONE_NEWPID | SIGCHLD, NULL);


除了PID,还实现了mount、uts、ipc、user、network 的namespace 隔离


PS:从宿主机的视角来看,这些通过namespace隔离的进程跟其他进程没有什么区别


即宿主机上可以看到运行在容器中的进程


猜你喜欢

转载自blog.51cto.com/pmghong/2398242