Docker的隔離性主要運(yùn)用Namespace 技術(shù)。
namespace(命名空間)可以隔離哪些:
1、文件系統(tǒng)需要是被隔離的
2、網(wǎng)絡(luò)也是需要被隔離的
3、進(jìn)程間的通信也要被隔離
4、針對(duì)權(quán)限,用戶和用戶組也需要隔離
5、進(jìn)程內(nèi)的PID也需要與宿主機(jī)中的PID進(jìn)行隔離
使用Namespace進(jìn)行容器的隔離有什么缺點(diǎn)呢?
最大的缺點(diǎn)就是隔離不徹底。
1)容器知識(shí)運(yùn)行在宿主機(jī)上的一種特殊的進(jìn)程,那么多個(gè)容器之間使用的就還是同一個(gè)宿主機(jī)的操作系統(tǒng)內(nèi)核。
2)在Linux內(nèi)核中,有很多資源和對(duì)象是不能被Namespace化的,最典型的例子是:時(shí)間,即如果某個(gè)容器修改了時(shí)間,那整個(gè)宿主機(jī)的時(shí)間都會(huì)隨之修改。
3)容器給應(yīng)用暴露出來的攻擊面比較大,在生產(chǎn)環(huán)境中,沒有人敢把運(yùn)行在物理機(jī)上的Linux容器暴露在公網(wǎng)上。