部署lxc

1、简介
linux

LXC为Linux Container的简写。Linux Container容器是一种内核虚拟化技术,能够提供轻量级的虚拟化,以便隔离进程和资源,并且不须要提供指令解释机制以及全虚拟化的其余复杂性。至关于C++中的NameSpace。容器有效地将由单个操做系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优点在于vim

(1)与宿主机使用同一个内核,性能损耗小;后端

(2)不须要指令级模拟;centos

(3)不须要即时(Just-in-time)编译;bash

(4)容器能够在CPU核心的本地运行指令,不须要任何专门的解释机制;网络

(5)避免了准虚拟化和系统调用替换中的复杂性;ide

(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。性能

总结:Linux Container是一种轻量级的虚拟化的手段。ui

Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有本身进程和网络空间的虚拟环境,但又有别于虚拟机,由于lxc是一种操做系统层次上的资源的虚拟化。url


2、与传统虚拟化对比

不一样于vmware,kvm等虚拟化技术,它是一种相似chroot的容器技术,很是的轻量级。

与传统的硬件虚拟化技术相比有如下优点:

a、更小的虚拟化开销。Linux内核自己是一个很好的硬件资源调度器,LXC的诸多特性基本由内核提供,而内核实现这些特性只有极少的花费,CPU,内存,硬盘都是直接使用。

b、更快的启动速度。lxc容器技术将操做系统抽象到了一个新的高度。直接从init启动,省去了硬件自检、grub引导、加载内核、加载驱动等传统启动项目,所以启动飞速。

c、更快速的部署。lxc与带cow特性的后端文件系统相结合,一旦建好了模板,利用快照功能,半秒钟便可实现克隆一台lxc虚拟机。LXC虚拟机本质上只是宿主机上的一个目录,这也为备份和迁移提供了极大便利。

d、更高内存使用效率。普通虚拟机通常会独占一段内存,即便闲置,其余虚拟机也没法使用,例如KVM。而容器能够只有一个内存上限,没有下限。若是它只使用1MB内存,那么它只占用宿主机1MB内存。宿主机能够将富余内存做为他用。


3、安装

3.1 解决依赖关系

# yum install libcgroup 
# service cgconfig start

# yum install libvirt	//在配置网桥的时候用到
# yum install rsync		//在安装OS的时候用于文件拷贝用到

3.2 提供虚拟网桥接口

在/etc/sysconfig/network-scripts目录中新建名为ifcfg-br0的配置文件,其内容以下:
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0
# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.200
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

# cat ifcfg-eth0 
DEVICE="eth0"
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE=br0

上述步骤无误后重启network服务便可。另外,还有其它简单的方式来实现桥接设备的建立,例如使用brctl或virsh等,这里再也不详述。

3.3 安装lxc

epel源中的lxc的版本为1.0.7

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# sed -i 's@^#@@' /etc/yum.repos.d/epel.repo
# sed -i 's@mirrorlist@#mirrorlist@' /etc/yum.repos.d/epel.repo

# yum install lxc lxc-templates

3.4 检查lxc运行环境

# lxc-checkconfig

3.5 建立centos虚拟机

lxc为建立虚拟机提供了模板文件,它们位于/usr/share/lxc/templates目录中。其中的lxc-centos即为建立lxc centos系统的模板。

另外,lxc为虚拟机提供的默认配置文件为/etc/lxc/default.conf,其中使用的桥接接口名称为virbr0,此与前面的建立的接口名称不一致,所以须要做出修改。
固然,也能够将此文件复制以后进行修改,并觉得做为接下来的要建立的centos虚拟机的专用配置文件。修改后的default.conf以下所示。

# cp /etc/lxc/{default.conf,default.conf.bak}
# cat /etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up

建立虚拟机centos:
# lxc-create -n centos -t /usr/share/lxc/templates/lxc-centos 		//默认是网络方式安装,安装的速率取决你的网速
Host CPE ID from /etc/system-release-cpe: cpe:/o:centos:linux:6:GA
Checking cache download in /var/cache/lxc/centos/x86_64/6/rootfs ... 
…………
…………
Complete!
Download complete.
Copy /var/cache/lxc/centos/x86_64/6/rootfs to /var/lib/lxc/centos/rootfs ... 	//这里的Copy彷佛就用的是rsync
Copying rootfs to /var/lib/lxc/centos/rootfs ...
Storing root password in '/var/lib/lxc/centos/tmp_root_pass'					//root用户的密码文件
Expiring password for user root.
passwd: Success

Container rootfs and config have been created.
Edit the config file to check/enable networking setup.

The temporary root password is stored in:

        '/var/lib/lxc/centos/tmp_root_pass'


The root password is set up as expired and will require it to be changed
at first login, which you should do as soon as possible.  If you lose the
root password or wish to change it without starting the container, you
can change it from the host by running the following command (which will
also reset the expired flag):

        chroot /var/lib/lxc/centos/rootfs passwd
		
上述输出内容表示系统安装已经成功,可由lxc-start命令启动了。另外,目标系统的root用户的默认密码在/var/lib/lxc/centos/tmp_root_pass文件中。

3.6 启动目标系统centos:

启动lxc虚拟机须要使用lxc-start命令。此命令的经常使用选项有

-n NAME:要启动的虚拟机的名称

-d: 在后台运行此虚拟机

-o /path/to/somefile: 日志文件的保存位置

-l: 日志级别


简单的启动命令以下所示:

# lxc-start -n centos


启动后可直接链接至目标系统的控制台,并在显示登陆提示符后登陆系统便可。须要注意的是,root用户的默认密码已经被设置为过时,所以第一次登陆时须要修改密码后方可以使用。


也能够在lxc-start的命令后面附加-d选项,让系统运行于后台。若是要中止虚拟机,使用lxc-stop命令便可。


4、经过本地安装OS

4.一、查看配置文件路径

# rpm -ql lxc-templates

4.二、修改CentOS的默认模板文件,修改前定要备份

# cp /usr/share/lxc/templates/{lxc-centos,lxc-centos.bak}
# cd /usr/share/lxc/templates/
# vim lxc-centos
修改以下行
[base]
name=local repository
baseurl=file:///mnt			//修改此处
EOF
else
	cat <<EOF > $REPO_FILE
[base]
name=CentOS-$release - Base
baseurl=file:///mnt			//修改此处

4.三、挂载光驱

# mount /dev/cdrom /mnt/

4.四、安装OS系统命令

# lxc-create -n centos02 -t /usr/share/lxc/templates/lxc-centos
or
# lxc-create -n centos03 -t centos

五、修改密码

# chroot /var/lib/lxc/centos02/rootfs passwd	//修改密码的第二种方式
Changing password for user root.
New password: 
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.
相关文章
相关标签/搜索