在docker中,進(jìn)程隔離是將每個(gè)容器都運(yùn)行在自己的進(jìn)程環(huán)境中的意思;Docker主要就是借助Linux內(nèi)核技術(shù)Namespace來做到隔離的,“Linux Namespaces”機(jī)制提供一種資源隔離方案。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。
docker進(jìn)程隔離是什么意思
進(jìn)程隔離:每個(gè)容器都運(yùn)行在自己的進(jìn)程環(huán)境中
隔離原理
Docker主要就是借助 Linux 內(nèi)核技術(shù)Namespace來做到隔離的,Linux Namespaces機(jī)制提供一種資源隔離方案。PID,IPC,Network等系統(tǒng)資源不再是全局性的,而是屬于某個(gè)特定的Namespace。
每個(gè)namespace下的資源對(duì)于其他namespace下的資源都是透明,不可見的。因此在操作系統(tǒng)層面上看,就會(huì)出現(xiàn)多個(gè)相同pid的進(jìn)程。系統(tǒng)中可以同時(shí)存在兩個(gè)進(jìn)程號(hào)為0,1,2的進(jìn)程,由于屬于不同的namespace,所以它們之間并不沖突。而在用戶層面上只能看到屬于用戶自己namespace下的資源,例如使用ps命令只能列出自己namespace下的進(jìn)程。這樣每個(gè)namespace看上去就像一個(gè)單獨(dú)的Linux系統(tǒng)。
進(jìn)程隔離
啟動(dòng)一個(gè)容器
docker run -it -p 8080:8080 --name pai-sn pai-sn:snapshot /bin/bash
-it 交互啟動(dòng),-p端口映射 ,–name 容器名稱 后面是鏡像名稱,打開shell,啟動(dòng)之后就進(jìn)入到了容器
查看進(jìn)程
ps -ef
使用top命令查看進(jìn)程資源
在宿主機(jī)查看下當(dāng)前執(zhí)行容器的進(jìn)程ps -ef|grep pai-sn
由此,我們可以知道docker run命令啟動(dòng)的只是一個(gè)進(jìn)程,它的pid是4677。而對(duì)于容器程序本身來說,它被隔離了,在容器內(nèi)部都只能看到自己內(nèi)部的進(jìn)程。Docker是借助了Linux內(nèi)核的Namespace技術(shù)來實(shí)現(xiàn)的。
推薦學(xué)習(xí):《docker視頻教程》