Linux容器工具-LXC
2014-03-06 09:59:13 阿炯

LXC项目由一个 Linux 内核补丁和一些用户空间工具组成,这些userspace工具使用由补丁增加的内核新特性,提供一套简化的工具来维护容器。采用C语言开发并在LGPL协议下授权。


LXC is a userspace interface for the Linux kernel containment features.

Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers.

Features

Current LXC uses the following kernel features to contain processes:
Kernel namespaces (ipc, uts, mount, pid, network and user)
Apparmor and SELinux profiles
Seccomp policies
Chroots (using pivot_root)
Kernel capabilities
Control groups (cgroups)

As such, LXC is often considered as something in the middle between a chroot on steroids and a full fledged virtual machine. The goal of LXC is to create an environment as close as possible as a standard Linux installation but without the need for a separate kernel.

容器可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。下面将简单介绍容器工具Linux Containers(LXC)。

容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模 拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。

通过提供一种创建和进入容器的方式,操作系统让应用程序就像在独立的机器上运行一样,但又能共享很多底层的资源。例如,可以有效地共享公共文件(比如glibc)的页缓存,因为所有容器都使用相同的内核,而且所有容器还常常共享相同的libc库(取决于容器配置)。这种共享常常可以扩展到目录中其他不需要写入内容的文件。

容器在提供隔离的同时,还通过共享这些资源节省开销,这意味着容器比真正的虚拟化的开销要小得多。与 Docker 的思路不同,Docker 是 PAAS,LXC 是 IAAS。

容器技术早就出现。例如,Solaris Zones 和 BSD jails 就是非 Linux 操作系统上的容器。用于Linux的容器技术也有丰富的技术遗产,例如Linux-Vserver、OpenVZ和FreeVPS。虽然这些技术都已经成熟,但是这些解决方案还没有将它们的容器支持集成到主流Linux内核。

最新版本:1.1
该版本包含大量新特性:
完全无特权的容器;
经过 5 年时间的安全更新和补丁修复的稳定 API;
官方提供 Python、Lua、Go 和 Ruby 语言绑定;
支持容器的克隆和快照。

该版本解决了systemd支持问题 。该版本将会提供支持一直到 2016 年 1 月份。如果你希望使用长期支持的稳定版本,建议还是使用 LXC 1.0,这个版本会一直支持到 2019年4月。此外一个不是严格要求的是 LXC 1.1 最好在 cgmanager 0.35 和 lxcfs 0.5 配合使用,LXC 1.1 引入通过 CRIU 实现容器对检查点和恢复的支持,解决了 systemd 的支持问题。

官方主页:https://linuxcontainers.org/