什麼是 Linux 容器和 Linux 管理程序?
我查看了 stackexchange 網站,但找不到任何東西。我查看了 Linux 容器https://en.wikipedia.org/wiki/LXC>以及管理程序<https://en.wikipedia.org/wiki/Hypervisor>上的維基百科條目,但對兩者的解釋超出了一個人沒有工作過任何一個都會明白。我還看到了<http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun但這也沒有解釋。
我玩過虛擬機,例如virtualbox。我有限理解的一個開始想法可能是虛擬機可能是在沙盒環境中測試軟體(當您無法購買/負擔得起機器並且仍然了解您正在開發的軟體時,擁有一個 Solaris 盒子)因為該目標硬體正在工作。)雖然它的使用受到限制。這可能也是它在雲計算領域取得飛躍的方式之一。問題很廣泛,所以這就是我提煉它的方式-
有些人可以解釋什麼是管理程序和 *nix 容器(如果可能的話,可以類比)?
*nix 虛擬機管理程序與虛擬機相同還是有區別?
虛擬機(VM) 是許多虛擬化技術的通用術語。
虛擬化技術有很多變化,但主要有:
- 硬體級虛擬化
- 作業系統級虛擬化
qemu-kvm
並且VMWare
是第一個例子。他們使用管理程序來管理執行完整作業系統的虛擬環境。例如,在一個qemu-kvm
系統上,您可以讓一個 VM 執行 FreeBSD,另一個執行 Windows,另一個執行 Linux。由這些技術創建的虛擬機對來賓而言就像孤立的個人電腦。這些有客人認為是正品的虛擬 CPU、RAM、NIC、圖形等。因此,可以在虛擬機上安裝許多不同的作業系統,它們“開箱即用”,無需修改。
雖然這非常方便,因為許多作業系統都可以輕鬆安裝,但它的缺點是管理程序必須模擬所有硬體,這會減慢速度。另一種選擇是半虛擬化硬體,其中為客戶開發了新的虛擬設備和驅動程序,旨在實現虛擬環境中的性能。
qemu-kvm
為此提供virtio
設備和驅動程序的範圍。這樣做的一個缺點是必須支持來賓作業系統。但如果支持,性能優勢是巨大的。
lxc
是作業系統級虛擬化或容器的範例。在這個系統下,只安裝了一個核心——主機核心。每個容器只是使用者態程序的隔離。例如,Web 伺服器(例如apache
)安裝在容器中。就該網路伺服器而言,唯一安裝的伺服器就是它本身。另一個容器可能正在執行 FTP 伺服器。該 FTP 伺服器不知道 Web 伺服器安裝 - 只有它自己。另一個容器可以包含 Linux 發行版的完整使用者空間安裝(只要該發行版能夠與主機系統的核心一起執行)。但是,使用容器時沒有單獨的作業系統安裝——只有使用者空間服務的隔離實例。因此,您不能在容器中安裝不同的平台——Linux 上不能安裝 Windows。
容器通常使用
chroot
. 這會創建一個單獨的私有根 (/
) 供程序使用。通過創建許多單獨的私有根,程序(Web 伺服器或 Linux 發行版等)在它們自己的隔離文件系統中執行。更先進的技術,例如cgroups
可以隔離其他資源,例如網路和 RAM。兩者各有利弊,許多長期存在的關於哪個最好的辯論也有其優點和缺點。
- 容器更輕,因為沒有為每個容器安裝完整的作業系統;虛擬機管理程序就是這種情況。因此,它們可以在規格較低的硬體上執行。但是,它們只能執行 Linux 來賓(在 Linux 主機上)。此外,由於它們共享核心,因此受感染的容器可能會影響另一個容器。
- 管理程序更安全,並且可以執行不同的作業系統,因為每個虛擬機中都安裝了完整的作業系統,而客戶不知道其他虛擬機。但是,這會使用主機上的更多資源,這必須相對強大。