÷è÷ë²Ù×÷ϵͳÔõÑùÌṩÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕµÄÖ§³Ö£¿
÷è÷ë²Ù×÷ϵͳÔõÑùÌṩÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕµÄÖ§³Ö£¿
ÕªÒª£º÷è÷ë²Ù×÷ϵͳÊÇÒ»ÖÖ»ùÓÚLinuxÄں˵ĿªÔ´²Ù×÷ϵͳ£¬Ëü¾ß±¸Ç¿Ê¢µÄÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕÖ§³Ö¡£±¾ÎĽ«ÏÈÈÝ÷è÷ë²Ù×÷ϵͳÌṩÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕÖ§³ÖµÄÔÀíºÍʵ¼ù£¬ÖصãÌÖÂÛËüÔõÑùʹÓÃKVMºÍDockerµÈÊÖÒÕʵÏÖÐéÄ⻯ºÍÈÝÆ÷»¯¡£
СÐò
ÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕÊÇÏÖ´úÔÆÅÌËãºÍÓ¦Óð²ÅŵÄÖ÷Òª»ù´¡ÉèÊ©¡£÷è÷ë²Ù×÷ϵͳ×÷ΪһÖÖ»ùÓÚLinuxÄں˵ĿªÔ´²Ù×÷ϵͳ£¬Í¨¹ýʹÓÃKVM£¨Kernel-based Virtual Machine£©ºÍDockerµÈÊÖÒÕ£¬ÊµÏÖÁËÇ¿Ê¢µÄÐéÄ⻯ºÍÈÝÆ÷»¯Ö§³Ö¡£
÷è÷ë²Ù×÷ϵͳµÄÐéÄ⻯֧³Ö
÷è÷ë²Ù×÷ϵͳͨ¹ýKVMʵÏÖÁËÐéÄ⻯ÊÖÒÕµÄÖ§³Ö¡£KVMÊÇ»ùÓÚLinuxÄں˵ÄÐéÄ⻯½â¾ö¼Æ»®£¬ËüÄܹ»ÔÚLinux²Ù×÷ϵͳÖн¨ÉèºÍÖÎÀí¶à¸öÐéÄâ»ú¡£ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄʾÀý´úÂ룬չʾÁËÔõÑùʹÓÃ÷è÷ë²Ù×÷ϵͳµÄÐéÄ⻯¹¦Ð§½¨ÉèºÍÔËÐÐÒ»¸öÐéÄâ»ú£º
import libvirt # ½¨ÉèÅþÁ¬µ½÷è÷ë²Ù×÷ϵͳµÄÍâµØÐéÄ⻯ÅþÁ¬ conn = libvirt.open('qemu:///system') # ʹÓÃXMLÐÎòÎļþ½ç˵ÐéÄâ»úµÄÉèÖà xml_config = ''' <domain type='kvm'> <name>my_vm</name> <memory unit='KiB'>2048000</memory> <vcpu placement='static'>2</vcpu> <devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/path/to/my_vm_disk.qcow2'/> <target dev='vda' bus='virtio'/> </disk> <interface type='network'> <mac address='52:54:00:a0:1f:ea'/> <source network='default'/> <model type='virtio'/> </interface> </devices> </domain> ''' # ʹÓÃXMLÉèÖÃÎļþ½¨ÉèÐéÄâ»ú vm = conn.createXML(xml_config, 0) # ÊÍ·ÅÐéÄâ»ú×ÊÔ´ vm.destroy() vm.undefine() conn.close()
µÇ¼ºó¸´ÖÆ
ÒÔÉÏ´úÂëÑÝʾÁËÔõÑùʹÓÃlibvirt¿âÅþÁ¬µ½÷è÷ë²Ù×÷ϵͳµÄÍâµØÐéÄ⻯ÅþÁ¬£¬²¢Í¨¹ýXMLÐÎòÎļþ½¨ÉèÒ»¸ö¾ßÓÐÁ½¸öÐéÄâCPUºÍ2GBÄÚ´æµÄÐéÄâ»ú¡£Õâ¸öÐéÄâ»ú»¹°üÀ¨Ò»¸öͨ¹ývirtio×ÜÏßÅþÁ¬µÄ´ÅÅ̺ÍÍøÂç½Ó¿Ú¡£
÷è÷ë²Ù×÷ϵͳµÄÈÝÆ÷ÊÖÒÕÖ§³Ö
÷è÷ë²Ù×÷ϵͳͨ¹ýDockerµÈÈÝÆ÷ÊÖÒÕʵÏÖÁËÈÝÆ÷»¯µÄÖ§³Ö¡£DockerÊÇÒ»ÖÖÇáÁ¿¼¶µÄÈÝÆ÷»¯ÒýÇ棬ËüÄܹ»ÔÚ÷è÷ë²Ù×÷ϵͳÖпìËÙ½¨ÉèºÍÖÎÀíÈÝÆ÷¡£ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄʾÀý´úÂ룬չʾÁËÔõÑùʹÓÃ÷è÷ë²Ù×÷ϵͳµÄÈÝÆ÷ÊÖÒÕ½¨ÉèÒ»¸ö»ùÓÚUbuntu¾µÏñµÄÈÝÆ÷£º
# ´ÓDocker HubÏÂÔØÒ»¸öUbuntu¾µÏñ docker pull ubuntu:latest # ÔÚ÷è÷ë²Ù×÷ϵͳÖн¨ÉèÒ»¸ö»ùÓÚUbuntu¾µÏñµÄÈÝÆ÷ docker run -it --name my_container ubuntu:latest
µÇ¼ºó¸´ÖÆ
ÒÔÉÏ´úÂëÑÝʾÁËÔõÑùͨ¹ýÏÂÁîÐÐÔÚ÷è÷ë²Ù×÷ϵͳÖÐÏÂÔز¢ÔËÐÐÒ»¸ö»ùÓÚUbuntu¾µÏñµÄÈÝÆ÷¡£Í¨¹ýÉÏÊöÏÂÁÎÒÃÇ¿ÉÒÔÔÚ÷è÷ë²Ù×÷ϵͳÖпìËÙ½¨ÉèºÍÖÎÀí¶à¸öÈÝÆ÷£¬²¢ÊµÏÖÓ¦ÓõĿìËÙ°²ÅÅÓëÀ©Õ¹¡£
×ܽá
÷è÷ë²Ù×÷ϵͳͨ¹ýʹÓÃKVMºÍDockerµÈÊÖÒÕ£¬ÊµÏÖÁËÇ¿Ê¢µÄÐéÄ⻯ºÍÈÝÆ÷»¯Ö§³Ö¡£±¾ÎÄÏÈÈÝÁËÔõÑùʹÓÃ÷è÷ë²Ù×÷ϵͳµÄÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕ£¬Í¨¹ýʾÀý´úÂëչʾÁËÔõÑù½¨ÉèºÍÖÎÀíÐéÄâ»úºÍÈÝÆ÷¡£Í¨¹ý÷è÷ë²Ù×÷ϵͳÌṩµÄÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕ£¬ÎÒÃÇ¿ÉÒÔ¸üºÃµØÖª×ãÔÆÅÌËãºÍÓ¦Óð²ÅŵÄÐèÇó£¬Ìá¸ß×ÊԴʹÓÃЧÂʺÍÓ¦Óð²ÅŵÄÎÞаÐÔ¡£
×ÖÊý£º636
ÒÔÉϾÍÊÇ÷è÷ë²Ù×÷ϵͳÔõÑùÌṩÐéÄ⻯ºÍÈÝÆ÷ÊÖÒÕµÄÖ§³Ö£¿µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡