
本文的 *** 作基于的Ubuntu系统。
Ubuntu下直接安装
安装完成后查看配置情况
启动LXC container
配置桥接网络
TODO
查看一下当前可用的模板
利用可用的模板创建一个centos的容器
命令中
创建完成后,利用工具lxc-ls可以查看当前建立的container
新建立的container的文件系统保存在目录 /var/lib/lxc/<container>/rootfs 下面,同时还有一个配置文件config
从一个已经创建好的container克隆出一个新的来
查看克隆好的新的lxc container
修改config文件,通过添加一行配置修改cpu分配,例如分配了CPU 0给container
首先在container内部创建一个文件夹,比如说 /mnt/share
然后主机上也创建一个文件夹,比如说'/tmp/share'
这个时候主机上保存container文件系统的目录下面也会产生 /mnt/share 这个目录,找到这个目录的绝对路径
修改container的配置文件config, 添加一行
这几个flag 可以在调用clone时候作为参数传入,从而实现namespace的隔离,从这个角度来说,container跟主要是进程角度的隔离,而不是传统的虚拟机,
因为它底层用用的同一个内核来调度。
cgroup 是linux 内核的另外一个控制和隔离进程的特性,他分为cpu ,memory,net,io等几个子系统,从而实现对进程cpu,内存,磁盘,网络等资源使用的控制。
制作自己容器,需要一个image ,可以从网上下一个,也可以自己制作,制作很简单,新装一个 *** 作系统,安装一些需要用到的软件包,然后用tar 制作 / 目录下的压缩包,去掉一些虚拟文件系统的文件,本文用的是自己制作的centos 6.5 的image。
容器实现过程可以归纳为
1, 用clone系统调用 创建子进程,传入namespace的那几个参数,实现namespace的隔离
2, 父进程中创建veth pair ,一个veth在自己的namespace,将另一个设置为子进程的namespace,实现container和宿主机的网络通信
3, 父进程创建cgroup memory和cpuset子系统,将子进程attach到cgroup子系统上,实现container 的资源限制和隔离
4, 子进程在自己的namespace里,设置主机名,mount proc虚拟文件系统,设置veth ip,chroot到centos 6镜像的位置, 最终将进程镜像替换成/bin/bash
5, 父进程调用waitpid 等待子进程退出
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)