LXC为Linux Container的简写。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。LXC的一个实例我们一般以container来称呼。

简单来讲,我们可以把lxc + cgroup看做是VirtualBox和Vmware一类的东西。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。

与传统虚拟化技术相比,它的优势在于:

(1)与宿 主机使用同一个内核,性能损耗小;
(2)不需要指令级模拟;
(3)不需要即时(Just-in-time)编译;
(4)容器可以在CPU核心的本地 运行指令,不需要任何专门的解释机制;
(5)避免了准虚拟化和系统调用替换中的复杂性;
(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
总结:Linux Container是一种轻量级的虚拟化的手段。
Linux Container提供了在单一可控 主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和 网络空间的虚拟环境,但又有别于 虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。

lxc是一个轻量化的虚拟机和传统的虚拟机也有一定区别

1. lxc会和宿主机共用一个内核,性能损耗比较小。
2. rootfs就在/var/lib/lxc/container_name。可以在宿主机上轻松修改container的文件系统。

运行时环境: 需要支持cgroup内核,现在最新的发行版一般都支持lxc。

安装方法:
建议使用apt-get或者yum从源里下载。自己编译容易被依赖关系搞死..
yum -y install lxc
apt-get install lxc

配置文件:
/etc/lxc/

网络:
使用nat的方法,连接到宿主机和internet.
在/etc/sysctl.conf里打开net.ipv4.ip_forward=1,并运行sysctl -p

brctl addbr nat
brctl setfd nat 0
ifconfig nat 192.168.0.1/16

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o nat -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i nat -o eth0 -j ACCEPT