LXCLinux 容器工具
LXC 項(xiàng)目由一個 Linux 內(nèi)核補(bǔ)丁和一些 userspace 工具組成。這些 userspace 工具使用由補(bǔ)丁增加的內(nèi)核新特性,提供一套簡化的工具來維護(hù)容器。
容器可以提供輕量級的虛擬化,以便隔離進(jìn)程和資源,而且不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜性。本文循序漸進(jìn)地介紹容器工具 Linux Containers(LXC)。
容器有效地將由單個操作系統(tǒng)管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。與虛擬化相比,這樣既不需要指令級模 擬,也不需要即時編譯。容器可以在核心 CPU 本地運(yùn)行指令,而不需要任何專門的解釋機(jī)制。此外,也避免了準(zhǔn)虛擬化(paravirtualization)和系統(tǒng)調(diào)用替換中的復(fù)雜性。
通 過提供一種創(chuàng)建和進(jìn)入容器的方式,操作系統(tǒng)讓應(yīng)用程序就像在獨(dú)立的機(jī)器上運(yùn)行一樣,但又能共享很多底層的資源。例如,可以有效地共享公共文件(比如 glibc)的頁緩存,因?yàn)樗腥萜鞫际褂孟嗤膬?nèi)核,而且所有容器還常常共享相同的 libc 庫(取決于容器配置)。這種共享常常可以擴(kuò)展到目錄中其他不需要寫入內(nèi)容的文件。
容器在提供隔離的同時,還通過共享這些資源節(jié)省開銷,這意味著容器比真正的虛擬化的開銷要小得多。
容 器技術(shù)早就出現(xiàn)。例如,Solaris Zones 和 BSD jails 就是非 Linux 操作系統(tǒng)上的容器。用于 Linux 的容器技術(shù)也有豐富的遺產(chǎn),例如 Linux-Vserver、OpenVZ 和 FreeVPS。雖然這些技術(shù)都已經(jīng)成熟,但是這些解決方案還沒有將它們的容器支持集成到主流 Linux 內(nèi)核。
