docker、lxc、cgroup、namespace是最近比较的技术。先了解一下他们分别是什么,然后说一下他们怎么用,具体实现机制以后再单独研究。
docker是lxc的管理器,lxc是cgroup的管理工具,cgroup是namespace的用户空间的管理接口。namespace是linux内核在task_struct中对进程组管理的基础机制。
再详细点说:
docker是用go来实现的,自动化了对lxc的管理过程,能够自动在线下载相应的发行版本的rootfs。
lxc可以直接chroot到任意的系统的rootfs上并通过cgroup的限制机制来控制容器内系统的资源占有率。
cgroup通过配置文件或者命令配置后,限制相应进程或一组进程使用的系统资源。
很明显,在lxc以上已经借助于chroot机制在一个限制的容器中运行一个完整的系统了,这样多个不通过虚拟化技术的新系统就在特定的占有物理资源的限制上运行起来。据说运行效率直逼实际机器。
下面说一下用法吧,先从下往上说:
cgroup
步骤:
- 在文件系统上建立层次结构
- 挂载文件系统并关联子系统
- 建立控制组
- 设置控制参数
- 将进程加入到控制组
通过/etc/cgconfig.conf配置或者cgroup-bin的相关指令来配置:
mount {
cpuset = /sys/fs/cgroup/cpuset;
momory = /sys/fs/cgroup/momory;
}
group cnsworder/my {
perm {
task {
uid = root;
gid = root;
}
admin {
uid = root;
gid = root;