《深入剖析Kubernetes - 05 | 白話容器基礎(chǔ)(一):從進程說開去》
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、雨湖網(wǎng)絡(luò)推廣、成都微信小程序、雨湖網(wǎng)絡(luò)營銷、雨湖企業(yè)策劃、雨湖品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供雨湖建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
容器的實現(xiàn)主要應(yīng)用了namespace 和 cgroups 的機制
其中namespace的實現(xiàn),實際上就是在底層調(diào)用clone() 時,加一個CLONE_NEWPID 參數(shù),為進程創(chuàng)建一個新的namespace,屏蔽其他進程pid,使其看不到宿主機上真正的進程空間,從而認為自己就是pid 1 的主進程
int pid = clone(main_function, stack_size, CLONE_NEWPID | SIGCHLD, NULL);
除了PID,還實現(xiàn)了mount、uts、ipc、user、network 的namespace 隔離
PS:從宿主機的視角來看,這些通過namespace隔離的進程跟其他進程沒有什么區(qū)別
即宿主機上可以看到運行在容器中的進程