docker可以隔離資源。
docker容器的本質(zhì)是宿主機(jī)上的一個(gè)進(jìn)程。
Docker通過namespace實(shí)現(xiàn)了資源隔離,通過cgroups實(shí)現(xiàn)了資源限制,通過*寫時(shí)復(fù)制機(jī)制(copy-on-write)*實(shí)現(xiàn)了高效的文件操作。
namespace 機(jī)制提供一種資源隔離方案。
PID,IPC,Network等系統(tǒng)資源不再試全局性的,而是屬于某個(gè)特定的Namespace.
每個(gè)namespace下的資源對(duì)于其他的namespace下的資源是透明的,不可見的。
Linux 內(nèi)核實(shí)現(xiàn)namespace的一個(gè)主要目的就是實(shí)現(xiàn)輕量級(jí)虛擬化(容器)服務(wù),在同一個(gè)namespace下的進(jìn)程可以感知彼此的變化,而對(duì)外界的進(jìn)程一無(wú)所知,以達(dá)到獨(dú)立和隔離的目的。
namespace(命名空間)可以隔離哪些:
文件系統(tǒng)需要是被隔離的
網(wǎng)絡(luò)也是需要被隔離的
進(jìn)程間的通信也要被隔離
針對(duì)權(quán)限,用戶和用戶組也需要隔離
進(jìn)程內(nèi)的PID也需要與宿主機(jī)中的PID進(jìn)行隔離
容器也要有自己的主機(jī)名
有了以上的隔離,我們認(rèn)為一個(gè)容器可以與宿主機(jī)和其他容器是隔離開的。
恰巧Linux 的namespace可以做到這些。