ºìÁªLinuxÃÅ»§
Linux°ïÖú

Âí¸çlinux½Ì³Ì·ÖÏíÖ®DockerϵÁÐÖ®----lxcÐéÄ⻯¿ìËÙÈëÃÅ

·¢²¼Ê±¼ä:2014-09-09 18:07:01À´Ô´:ºìÁª×÷Õß:СС295813080
Ò»¡¢Cgroups

CgroupsÊÇΪControl groupsµÄËõд£¬ÊÇLinuxÄں˵ÄÒ»¸ö¹¦ÄÜ£¬ÓÃÀ´ÏÞÖƱ¨¸æºÍ¸ôÀëÒ»¸ö½ø³Ì×éµÄ×ÊÔ´(CPU¡¢ÄÚ´æ¡¢´ÅÅÌÊäÈëÊä³öµÈ)¡£×î³õÓÉÓÉGoogleµÄ¹¤³Ìʦ(Ö÷ÒªÊÇPaul MenageºÍRohit Seth)ÔÚ2006ÄêÒÔ¡°process containers(½ø³ÌÈÝÆ÷)¡±µÄÃû×Ö¿ªÊ¼µÄ£¬ ÔÚ2007ÄêµÄÍíЩʱºò±»ÖØÃüÃûΪ¡°¿ØÖÆ×顱²¢±»ºÏ²¢µ½ÁË2.6.24°æµÄÄÚºËÖС£

¼òµ¥À´½²£¬CgroupÊÇÓÃÓÚ½«Ò»¸ö»ò¶à¸ö½ø³Ì¹ØÁª³É¡°½ø³Ì×顱²¢Í³Ò»½øÐеļà¿ØºÍ¹ÜÀíµÄÈÝÆ÷¡£¸ù¾Ý¼à¿Ø»ò¹ÜÀíµÄÐèÒª£¬ÔËÐÐÖеÄϵͳÉϺܿÉÄÜ´æÔÚ¶à¸öCgroup£¬¶øÕâЩCgroup±»×éÖ¯³ÉÁ˲㼶½á¹¹£¨µ¹ÖõÄÊ÷×´½á¹¹£©¡£ÊÂʵÉÏ£¬CgroupsÊÇÒ»ÖÖ×ÊÔ´¿ØÖÆ»úÖÆ£¬Æä×ÊÔ´ÅäÖõÄ×îСµ¥Î»ÊÇËùνµÄSubsystem----Ò»ÖÖ×ÊÔ´¿ØÖÆÆ÷£¬Í¨¹ý½«×ÊÔ´»®·ÖΪ¶àÖÖ²»Í¬µÄÀàÐÍ£¨CPU¡¢ÄÚ´æ¡¢´ÅÅÌÊäÈëÊä³öµÈ£©²¢½«ÕâЩÀàÐ͵Ä×ÊÔ´¹ØÁªÖÁ²ã¼¶½á¹¹ÖÐÖ¸¶¨µÄCgroupʵÏÖ×ÊÔ´·ÖÅä¡£

£¨´ý²¹È«£©

¶þ¡¢LXC

LXC¼´LinuX Containers£¬ËüÊÇÒ»ÖÖÀûÓÃаæLinuxÄں˵ÄÌØÐÔ£¨CgroupsµÈ£©ÊµÏÖµÄÎÞÐèhypervisorµÄÇáÐÍÐéÄ⻯¼¼Êõ¡£LXCÄܹ»ÐéÄâ³öÒ»¸öÍêÕûµÄϵͳ»·¾³£¨rootfs£©£¬Ò²¿ÉÒÔ½öΪµ¥¸ö»ò¶à¸öÓ¦ÓóÌÐòÌṩÐéÄ⻯ÔËÐл·¾³¡£´ÓʹÓ÷½Ê½À´¿´£¬Ëü¸üÏñÊÇÔöÇ¿°æµÄchroot»·¾³¡£

£¨´ý²¹È«£©

Èý¡¢CentOS 6.5ÉÏʹÓÃlxc-1.0.5

3.1 ½â¾öÒÀÀµ¹Øϵ

# yum install libcgroup
# service cgconfig start

3.2 ÌṩÐéÄâÍøÇŽӿÚ

ÔÚ/etc/sysconfig/network-scriptsĿ¼ÖÐн¨ÃûΪifcfg-br0µÄÅäÖÃÎļþ£¬ÆäÄÚÈÝÈçÏ£º

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=172.16.100.7
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no

½ÓϽ«ÇŽӵÄÎïÀíÍø¿¨£¨¼ÙÉèΪeth0£©¹ØÁªÖÁÇ°Ã涨ÒåµÄÇŽÓÉ豸£¬±à¼­/etc/sysconfig/network-script/ifcfg-eth0ΪÀàËÆÈçÏÂÄÚÈÝ£º

DEVICE="eth0"
BOOTPROTO="static"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE=br0

ÉÏÊö²½ÖèÎÞÎóºóÖØÆônetwork·þÎñ¼´¿É¡£ÁíÍ⣬»¹ÓÐÆäËü¼òµ¥µÄ·½Ê½À´ÊµÏÖÇŽÓÉ豸µÄ´´½¨£¬ÀýÈçʹÓÃbrctl»òvirshµÈ£¬ÕâÀï²»ÔÙÏêÊö¡£

3.3 °²×°lxc

epelÔ´ÖÐÌṩµÄlxc°æ±¾Îª0.9.0£¬Æäδ´øcentosϵͳģ°å¡£Òò´Ë£¬ÕâÀïÑ¡ÔñʹÓÃÄ¿Ç°×îеÄlxc°æ±¾1.0.5¡£±àÒë°²×°¹ý³Ì½ÏΪ¼òµ¥£¬°´ÆäÔ´ÂëĿ¼ÖеÄINSTALLÎĵµÖеÄÌáʾ½øÐм´¿É¡£ÎÒÃÇÊÂÏȾ­¹ý²âÊÔºóÒѾ­½«lxc-1.0.5ÖÆ×÷³ÉÁËÊÊÓÃÓÚcentos 6 x86_64ƽ̨µÄrpm°ü£¨Í¨¹ý¸½¼þÏÂÔØ£©£¬Òò´Ë£¬ÕâÀォֱ½ÓʹÓÃrpmÃüÁî°²×°¡£

# yum install lxc-1.0.5-1.el6.x86_64.rpm lxc-libs-1.0.5-1.el6.x86_64.rpm

3.4 ¼ì²élxcÔËÐл·¾³

# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-2.6.32-431.el6.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled

Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

3.5 ´´½¨centosÐéÄâ»ú

lxcΪ´´½¨ÐéÄâ»úÌṩÁËÄ£°åÎļþ£¬ËüÃÇλÓÚ/usr/share/lxc/templatesĿ¼ÖС£ÆäÖеÄlxc-centos¼´Îª´´½¨lxc centosϵͳµÄÄ£°å¡£

ÁíÍ⣬lxcΪÐéÄâ»úÌṩµÄĬÈÏÅäÖÃÎļþΪ/etc/lxc/default.conf£¬ÆäÖÐʹÓõÄÇŽӽӿÚÃû³ÆΪvirbr0£¬´ËÓëÇ°ÃæµÄ´´½¨µÄ½Ó¿ÚÃû³Æ²»Ò»Ö£¬Òò´ËÐèÒª×÷³öÐ޸ġ£µ±È»£¬Ò²¿ÉÒÔ½«´ËÎļþ¸´ÖÆÖ®ºó½øÐÐÐ޸ģ¬²¢ÒÔΪ×÷Ϊ½ÓÏÂÀ´µÄÒª´´½¨µÄcentosÐéÄâ»úµÄרÓÃÅäÖÃÎļþ¡£Ð޸ĺóµÄ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 ...
Copying rootfs to /var/lib/lxc/centos/rootfs ...
Storing root password in '/var/lib/lxc/centos/tmp_root_pass'
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ÃüÁî¼´¿É¡£

linux½Ì³Ì www.magedu.com
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. 735513561 ÓÚ 2014-09-13 11:26:26·¢±í:

    ¸Ðл¥Ö÷·¢Ìû