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