LXC配置文件的manpage:http://manpages.ubuntu.com/manpages/natty/man5/lxc.conf.5.htmlLXC配置项都是以key=value的形式
LXC配置文件的man page :http://manpages.ubuntu.com/manpages/natty/man5/lxc.conf.5.html
LXC配置项都是以key=value的形式,#开始的一行代码注释。配置也可以在lxc-execute或者lxc-start的命令行以-s key=value设定
这里介绍一下常用的配置:
1.Cgroup部分(所有Cgroup子系统的配置参数均可以通过lxc-cgroup 命令进行动态获得或者调整)
LXC采用Cgroup来对容器进行资源管理,因此Cgroup的各个子系统均可以使用。实际上使用LXC之前,必须执行mount none -t cgroup /cgroup 挂载cgroup,或者采用echo "none /cgroup cgroup defaults 0 0" >> /etc/fstab让系统每次启动自动挂载Cgroup。这样以来Cgroup的所有子系统自动挂载到了一个hierarchy,LXC在创建容器的时候就在/ group下创建一个子group以实现对容器的资源控制,我们就可以根据需要设定相应子系统的参数来达到目的。
Cgroup部分的配置都是以lxc.cgroup.[subsystem name].key=value的形式出现的.例如:lxc.cgroup.cpu.shares=512 lxc.cgroup.cpuset.cpus=1.2
2.network部分
network部分的配置均以lxc.network开头.
lxc.network.type指定用于容器的网络类型:
empty:新的网络空间会为容器建立,但是没有任何网络接口
veth:新的网络空间会为容器建立,容器将链接到lxc.network.link定义的网桥上,从而与外部通信。网桥必须在预先建立。
macvlan:新的网络空间会为容器建立,一个macvlan的接口会链接到lxc.network.link上。
phys:新的网络空间会被建立,然后lxc.network.link指定的物理接口会被分配给容器
lxc.network.flags用于指定网络的状态
up:网络处于可用状态
lxc.network.link用于指定用于和容器接口通信的真实接口,比如一个网桥br0
lxc.network.name用于指定容器的网络接口的名字,与宿主接口不在一个命名空间。如果不指定,lxc为自动分配一个
lxc.network.hwaddr用于指定容器的网络接口的mac地址
lxc.network.ipv4用于指定容器的网络接口的ipv4地址,如果不设置或者设为0.0.0.0则表示,容器将通过dhcp的方式获得ip地址
lxc.network.ipv6用于指定容器的网络接口的ipv6地址
3.rootfs部分
lxc.rootfs用于指定容器的虚拟根目录,设定此项以后,容器内所有进程将会把此目录根目录,不能访问此目录之外的路径,相当于chroot的效果。
PS:用这几个部分已经可以配一个比较完整的应用容器了,提供了cpu memory IO资源控制,提供单独的网络、根目录空间,再结合Loop文件或者LVM做一下硬盘限制就更好了。