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