《深入剖析Kubernetes - 05 | 白话容器基础(一):从进程说开去》
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站设计、雨湖网络推广、成都微信小程序、雨湖网络营销、雨湖企业策划、雨湖品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供雨湖建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
容器的实现主要应用了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隔离的进程跟其他进程没有什么区别
即宿主机上可以看到运行在容器中的进程