部署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.
相關文章
相關標籤/搜索