1.1 LXC是什么?

1.1.1 关于LXC

LXC,其名称来自Linux软件容器(Linux Containers)的缩写,一种操作系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的名字空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。

图 - lxc官方logo

在Linux内核中,提供了cgroups功能,来达成资源的区隔化。它同时也提供了名称空间区隔化的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。但是cgroups并不一定需要引导任何虚拟机。

LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。软件Docker被用来管理LXC的环境。

1.1.2 关于操作系统层虚拟化

操作系统层虚拟化(英语:Operating system–level virtualization),一种虚拟化技术,这种技术将操作系统内核虚拟化,可以允许使用者空间软件物件(instances)被分割成几个独立的单元,在内核中运行,而不是只有一个单一物件运行。这个软件物件,也被称为是一个容器(containers),虚拟引擎(Virtualization engine),虚拟专用服务器(virtual private servers)或是 jails。对每个行程的拥有者与使用者来说,他们使用的服务器程式,看起来就像是自己专用的。

操作系统层虚拟化之后,可以实现软件的即时迁移(Live migration),使一个软件容器中的物件,即时移动到另一个操作系统下,再重新执行起来。但是在这种技术下,软件即时迁移,只能在同样的操作系统下进行。

在类Unix操作系统中,这个技术最早起源于标准的chroot机制,再进一步演化而成。除了将软件独立化的机制之外,内核通常也提供资源管理功能,使得单一软件容器在运作时,对于其他软件容器的造成的交互影响最小化。

1.1.3 LXC的特点

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

最新文章

  1. .NET中使用APlayer组件自制播放器
  2. 让easyui datagrid支持bootstrap的tooltip
  3. AES 与Base64加密
  4. Android单元测试实践
  5. hdu1160 LIS变形
  6. android genymation eclipse安装
  7. extjs 简单入门
  8. html表格 第五节
  9. CloudStack核心类ApiServlet、ApiServer、ApiDispatcher、GenericDaoBase源码分析
  10. JS操作JSON的方法总结
  11. [高并发]EntityFramework之高性能扩展
  12. FPGA阶段性总结及后续博文计划
  13. MySQL存储引擎InnoDB与MyISAM的区别
  14. Graph图总结
  15. webpack 中版本兼容性问题错误总结
  16. Flutter的Appbar
  17. 实力封装:Unity打包AssetBundle(大结局)
  18. Python 爬虫 --- urllib
  19. 一张非常强大的OSI七层模型图解。。。
  20. spring 源码导入eclipse

热门文章

  1. VS2015 打包winform 安装程序
  2. .Net Discovery 系列之二--string从入门到精通(下)
  3. Android 之窗口小部件高级篇--App Widget 之 RemoteViews
  4. GPG入门教程
  5. C#编程(六十二)---------LINQ标准的查询操作符
  6. C#编程(二十九)----------泛型接口
  7. Android SDK Download List
  8. 手机端可以和PC端同时在线-java QRCode 实现网站扫码登录(即支持同帐号多设备同时登录)
  9. BaseControl按钮合集
  10. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)