LXC

维基百科,自由的百科全书
跳转至: 导航搜索

LXC,其名稱來自Linux軟體容器(Linux Containers)的縮寫,一種作業系統層虛擬化(Operating system–level virtualization)技術,為Linux内核容器功能的一个用户空间接口。它將應用軟體系統打包成一個軟體容器(Container),內含應用軟體本身的程式碼,以及所需要的作業系統核心和函式庫。透過統一的命名空間和共用API來分配不同軟體容器的可用硬體資源,創造出應用程式的獨立沙箱執行環境,使得Linux用户可以容易的创建和管理系统或应用容器。[1]

在Linux內核中,提供了cgroups功能,來達成資源的區隔化。它同時也提供了名稱空間區隔化的功能,使應用程式看到的作業系統環境被區隔成獨立區間,包括行程樹,網路,使用者id,以及掛載的檔案系統。但是cgroups並不一定需要啟動任何虛擬機器。

LXC利用cgropus與名稱空間的功能,提供應用軟體一個獨立的作業系統環境。LXC不需要Hypervisor這個軟體層,軟體容器(Container)本身極為輕量化,提升了建立虛擬機器的速度。軟體Docker被用來管理LXC的環境。

特点[编辑]

目前的LXC使用下列内核功能来控制进程:

因此,LXC通常被认为介于“加强版”的chroot和完全成熟的虚拟机之间的技术。LXC的目标是建立一个尽可能与标准安装的Linux相同但又不需要分离内核的环境。 容器技术很早以前就出现了。和LXC相似的技术有:FreeBSDJailSolarisSolaris Container。用于Linux的容器技术也有丰富的遗产,例如Linux VserverOpenVZFreeVPS。这些技术都已经很成熟,但这些解决方案都还没有将它们的容器集成到任何主流的Linux内核。 容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好的在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化系统调用替换中的复杂性。 通过提供一种创建和进入容器的方式,操作系统让应用程序就像在独立的机器上运行一样,但又能共享很多底层资源。例如,可以有效的共享公共文件(如glibc)的页缓存,因为所有容器都使用相同的内核,所以容器还常常共享相同的libc库(取决于容器配置)。这种共享常常可以扩展到目录中其他不需要写入内容的文件。 容器在提供隔离的同时,还通过共享这些资源节省开销,这意味着容器比真正的虚拟化开销要小很多。[2]

参看[编辑]

参考文献[编辑]

  1. ^ What's LXC?. linuxcontainers.org. 
  2. ^ Matt Helsley. LXC: Linux容器工具. March 2nd 2009. 

外部連結[编辑]