Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
PaaSʱ´úÐÒ¸£µÄ³ÌÐòÔ±£¬ÀûÓÃDocker¹¹½¨¿ª·¢»·¾³
 
×÷Õß UC¼¼Êõ²©¿Í »ðÁú¹ûÈí¼þ  ·¢²¼ÓÚ 2014-08-12
  2569  次浏览      27
 

ͨ¹ýÔÚÑз¢¹ý³ÌÖÐʹÓÃDocker´î½¨ÁË×Ô¼ºÍêÕûµÄ¿ª·¢»·¾³£¬×÷Õß·¢³öÁËPaaSʱ´úµÄ³ÌÐòÔ±ÕæÊÇÐÒ¸£µÄ¸Ð¿®¡£Docker¾¿¾¹Îª³ÌÐòÔ±´øÀ´ÁËÄÄЩ¸£ÀûÄØ£¿±¾ÎÄ×ªÔØ×ÔUC¼¼Êõ²©¿Í¡£

×î½ü½Ó´¥PaaSÏà¹ØµÄ֪ʶ£¬ÔÚÑз¢¹ý³ÌÖпªÊ¼Ê¹ÓÃDocker´î½¨ÁË×Ô¼ºÍêÕûµÄ¿ª·¢»·¾³£¬¸Ð¾õÉú»îÔÚPaaSʱ´úµÄ³ÌÐòÔ±ÕæÊÇÐÒ¸££¬±¾ÎÄ»á¼òÒª½éÉÜÏÂDockerÊÇʲô£¬ÈçºÎÀûÓÃDockerÀ´´î½¨×Ô¼ºµÄ¿ª·¢»·¾³£¨±¾ÎÄÖ÷ÒªÊÇÃæÏòMac OS X£©£¬ÒÔ¼°ÆÚ¼äËùÓöµ½µÄһЩ¿ÓºÍ½â¾ö·½°¸¡££¨±¾ÎÄ»áÒªÇóÄã¶ÔPaaS¡¢LXC¡¢CGroup¡¢AUFSÓÐÒ»¶¨µÄÁ˽â»ù´¡£¬Çë×ÔÐÐGoogle £©

´ó±³¾°¨CÐéÄ⻯¼¼ÊõÀúÊ·

¼ÆËã»úÐéÄ⻯¼¼ÊõÓÉÀ´ÒѾ㬴ÓÓ²¼þ·ÂÕæµ½È«ÐéÄ⻯£¬ÔÙµ½×¼ÐéÄ⻯ºÍ²Ù×÷ϵͳÐéÄ⻯£¬¸÷ÖÖ¼¼Êõ·ÛÄ«µÇ³¡£¬ÖÖÀà·±¶à£¬ËµÊµÔÚµÄÓеãÑÛ»¨çÔÂҺ͸´ÔÓ£»µ«Óû§µÄºËÐÄËßÇóÒ»Ö±ÊDZȽϼòµ¥µÄ£¬½µµÍÐÅÏ¢¼¼Êõ£¨IT£©µÄÔËÓª³É±¾£¬Ìá¸ß×ÊÔ´ÀûÓÃÂÊ£¬Ìá¸ß°²È«ÐԺͿɿ¿ÐԵȵȣ»Ëä˵Óû§µÄºËÐÄËßÇó±È½Ï¼òµ¥£¬µ«Ã¿¸öʱ´úµÄÐèÇ󳡾°È´ÊDz»Í¬µÄ¡£ÔÚ´óÐÍ»úʱ´ú£¬ÐéÄ⻯¼¼Êõ±»ÓÃÀ´Ö§³Ö¶à¸öÓû§Äܹ»Í¬Ê±Ê¹ÓôóÐÍ»ú£¬ÔÚx86¼Ü¹¹Ê±´ú£¬Ëæ×ÅÆóÒµ·þÎñµÄ´ó¹æÄ£²¿Êð£¬ÐéÄ⻯¼¼ÊõÖ÷ÒªÊÇÓÃÀ´Ìá¸ßÆóÒµ×ÊÔ´µÄÀûÓÃÂÊ£¬¶øÏÖÈç½ñ£¬Ëæ×ÅÔÆ¼ÆËãʱ´úµÄµ½À´£¬ÈËÃǶÔÓ¦ÓõݲȫÐÔ¡¢¸ôÀëÐÔÔ½À´Ô½¸ß£¬¶ÔÓÚ²¿ÊðµÄ±ê×¼»¯ÒÔ¼°ÐéÄâ»úµÄÐÔÄÜÒªÇóÔ½À´Ô½¸ß¡£ÏÖÈç½ñ£¬Ò»ÖÖ½ÐLinuxÈÝÆ÷µÄÐéÄ⻯¼¼ÊõÖ𽥵õ½¹ã·ºµÄÓ¦Óã¬ËüµÄÓŵãÓÐÐí¶à£¬±¾ÎIJ»Ò»Ò»×¸Êö£¬ÓÐÌ«¶àµÄÎÄÕ¿ÉÒԲο¼¡£

ʲôÊÇDocker£¿

DockerµÄÓ¢Îı¾ÒâÊÇÂëÍ·¹¤ÈË£¬Ò²¾ÍÊǰáÔ˹¤£¬ÕâÖÖ°áÔ˹¤°áÔ˵ÄÊǼ¯×°Ï䣨Container£©£¬¼¯×°ÏäÀïÃæ×°µÄ¿É²»ÊÇÉÌÆ·»õÎ¶øÊÇÈÎÒâÀàÐ͵ÄApp£¬Docker°ÑApp£¨½ÐPayload£©×°ÔÚContainerÄÚ£¬Í¨¹ýLinux Container¼¼ÊõµÄ°ü×°½«App±ä³ÉÒ»ÖÖ±ê×¼»¯µÄ¡¢¿ÉÒÆÖ²µÄ¡¢×Ô¹ÜÀíµÄ×é¼þ£¬ÕâÖÖ×é¼þ¿ÉÒÔÔÚÄãµÄlatopÉÏ¿ª·¢¡¢µ÷ÊÔ¡¢ÔËÐУ¬×îÖշdz£·½±ãºÍÒ»ÖµØÔËÐÐÔÚproduction»·¾³Ï¡£

DockerµÄºËÐĵײ㼼ÊõÊÇLXC£¨Linux Container£©£¬DockerÔÚÆäÉÏÃæ¼ÓÁ˱¡±¡µÄÒ»²ã£¬Ìí¼ÓÁËÐí¶àÓÐÓõŦÄÜ¡£?ÕâÆªstackoverflowÉϵÄÎÊÌâºÍ´ð°¸ºÜºÃµØÚ¹ÊÍÁËDockerºÍLXCµÄÇø±ð£¬Äܹ»ÈÃÄã¸üºÃµÄÁ˽âʲôÊÇDocker£¬ ¼òµ¥·­ÒëϾÍÊÇÒÔϼ¸µã£º

DockerÌṩÁËÒ»ÖÖ¿ÉÒÆÖ²µÄÅäÖñê×¼»¯»úÖÆ£¬ÔÊÐíÄãÒ»ÖÂÐÔµØÔÚ²»Í¬µÄ»úÆ÷ÉÏÔËÐÐͬһ¸öContainer£»¶øLXC±¾Éí¿ÉÄÜÒòΪ²»Í¬»úÆ÷µÄ²»Í¬ÅäÖöøÎÞ·¨·½±ãµØÒÆÖ²ÔËÐУ»

DockerÒÔAppΪÖÐÐÄ£¬ÎªÓ¦ÓõIJ¿Êð×öÁ˺ܶàÓÅ»¯£¬¶øLXCµÄ°ïÖú½Å±¾Ö÷ÒªÊǾ۽¹ÓÚÈçºÎ»úÆ÷Æô¶¯µØ¸ü¿ìºÍºÄ¸üÉÙµÄÄڴ棻

DockerΪAppÌṩÁËÒ»ÖÖ×Ô¶¯»¯¹¹½¨»úÖÆ£¨Dockerfile£©£¬°üÀ¨´ò°ü£¬»ù´¡ÉèÊ©ÒÀÀµ¹ÜÀíºÍ°²×°µÈµÈ£»

DockerÌṩÁËÒ»ÖÖÀàËÆgitµÄContainer°æ±¾»¯µÄ»úÖÆ£¬ÔÊÐíÄã¶ÔÄã´´½¨¹ýµÄÈÝÆ÷½øÐа汾¹ÜÀí£¬ÒÀ¿¿ÕâÖÖ»úÖÆ£¬Ä㻹¿ÉÒÔÏÂÔØ±ðÈË´´½¨µÄContainer£¬ÉõÖÁÏñgitÄÇÑù½øÐкϲ¢£»

Docker ContainerÊÇ¿ÉÖØÓõģ¬ÒÀÀµÓÚ°æ±¾»¯»úÖÆ£¬ÄãºÜÈÝÒ×ÖØÓñðÈ˵ÄContainer£¨½ÐImage£©£¬×÷Ϊ»ù´¡°æ±¾½øÐÐÀ©Õ¹£»

Docker ContainerÊǿɹ²ÏíµÄ£¬ÓеãÀàËÆgithubÒ»Ñù£¬DockerÓÐ×Ô¼ºµÄINDEX£¬Äã¿ÉÒÔ´´½¨×Ô¼ºµÄDockerÓû§²¢ÉÏ´«ºÍÏÂÔØDocker Image£»

DockerÌṩÁ˺ܶàµÄ¹¤¾ßÁ´£¬ÐγÉÁËÒ»¸öÉú̬ϵͳ£»ÕâЩ¹¤¾ßµÄÄ¿±êÊÇ×Ô¶¯»¯¡¢¸öÐÔ»¯ºÍ¼¯³É»¯£¬°üÀ¨¶ÔPAASƽ̨µÄÖ§³ÖµÈ£»

ÄÇôDockerÓÐʲôÓÃÄØ£¿¶ÔÓÚÔËάÀ´Ëµ£¬DockerÌṩÁËÒ»ÖÖ¿ÉÒÆÖ²µÄ±ê×¼»¯²¿Êð¹ý³Ì£¬Ê¹µÃ¹æÄ£»¯¡¢×Ô¶¯»¯¡¢Òì¹¹»¯µÄ²¿Êð³ÉΪ¿ÉÄÜÉõÖÁÊÇÇáËɼòµ¥µÄÊÂÇ飻¶ø¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬DockerÌṩÁËÒ»ÖÖ¿ª·¢»·¾³µÄ¹ÜÀí·½·¨£¬°üÀ¨Ó³Ïñ¡¢¹¹½¨¡¢¹²ÏíµÈ¹¦ÄÜ£¬¶øºóÕßÊDZ¾ÎĵÄÖ÷Ìâ¡£

DockerµÄ°²×°ºÍ¹¹³É

Docker¹Ù·½±¾ÉíÌṩÁ˷dz£¾ßÌåµÄ°²×°½Ì³Ì£¬ÕâÀﲻ˵¾ßÌåµÄ°²×°¹ý³Ì£¬Çë²Î¿¼°²×°£¨Macϵͳ£©£¬ÖØÒªµÄÊÇÃèÊöÏÂÔ­ÀíºÍ°²×°Íê³ÉºóµÄ½á¹¹£¬ºÃ¶ÔDocker¸üºÃµÄÁ˽⡣ ÓÉÓÚLXC±¾Éí²»Ö§³ÖMacÄںˣ¬Òò´ËÐèÒªÅÜÒ»¸öVirtualBoxÐéÄâ»ú£¨TinyCoreLinux£©À´°²×°£¬ÐÒºÃDockerÉçÇøÌṩÁËÒ»¸ö·Ç³£·½±ãµÄ¹¤¾ßboot2docker£¨Æäʵ¾ÍÊÇÒ»¸öVBoxManageµÄ°ü×°shell½Å±¾£©£¬ÓÃÓÚ°²×°MacϵÄÕû¸öDocker»·¾³¡£¾ßÌåµÄ½á¹¹ÈçÏ£º

ÈçͼËùʾ£¬°²×°Íê³Éºó£¬¾ßÌåÇé¿öÈçÏ£º

ÔÚMacµÄhomeĿ¼~/.boot2dockerÏ´´½¨ÁËÐéÄâ»úËùÐèÒªµÄÎļþ£¬ÆäÖÐboot2docker.isoÊÇÐéÄâ»úÓ³Ïñ£¬ÕâÊÇÒ»¸öÓÉCD-ROMÒýµ¼µÄTinyCoreLinuxϵͳ£»¶øboot2docker-vm.vmdkÎļþÔòÊÇÄãµÄÐéÄâ»ú´ÅÅÌ£¬ÄãËùÓеij־û¯Êý¾Ý¶¼´æ·ÅÔÚÕâÀ°üÀ¨docker´´½¨µÄlxcÈÝÆ÷µÈÎļþ¡£

ÔÚMacÏ£¬Docker±»·ÖΪ¿Í»§¶Ëdocker-clientºÍ·þÎñ¶Ëdocker-daemonÁ½²¿·Ö£¬Èç¹ûÊÇÔÚlinux£¨±ÈÈçubuntu£©£¬Êµ¼ÊÉÏÔòÊÇͬһ¸ö¿ÉÖ´ÐÐÎļþͬʱ³äµ±¿Í»§¶ËºÍ·þÎñ¶Ë¡£docker-daemon¿ÉÒÔ¼àÌýunix scoket£¬Ò²¿ÉÒÔÔÚtcp socket£¨Ä¬È϶˿ÚΪ4234£©£¬docker-client»áͨ¹ýÒ»¸ö½ÐDOCKER_HOSTµÄ»·¾³±äÁ¿¶ÁÈ¡·þÎñµØÖ·ºÍ¶Ë¿Ú£¬Òò´ËÄãÓ¦¸ÃÔÚÄãµÄbash_profileÎļþÀïÃæÌí¼ÓÕâôһÐУº

docker-daemonÅÜÔÚÐéÄâ»úÉÏ£¬Õâ¸ö³ÌÐòʵ¼ÊÉϾÍÊǽÓÊÕdocker-client·¢Ë͹ýÀ´µÄÏûÏ¢ÃüÁ´´½¨¡¢Æô¶¯ºÍÏú»ÙlxcÈÝÆ÷£¬ÒÔ¼°Docker±¾ÉíµÄ°æ±¾¹ÜÀí¡¢Ó³Ïñ´æ´¢µÈµÈ ÔËÐÐÄãµÄµÚÒ»¸öDockerÈÝÆ÷°²×°Íê³Éºó£¬¾Í²î²»¶à¿ÉÒÔ¿ªÊ¼´´½¨ºÍÔËÐÐDockerÈÝÆ÷ÁË£¬ÔÚÕâ֮ǰ£¬ÄãÊ×ÏȵÃÏÂÔØÒ»¸öImage£¬Ê²Ã´ÊÇImage£¿ÎÒÃÇÏÈÀ´Á˽âDockerµÄ2¸ö»ù´¡¸ÅÄImageºÍContainer¡£

ContainerºÍImage ÔÚDockerµÄÊÀ½çÀImageÊÇÖ¸Ò»¸öÖ»¶ÁµÄ²ã£¨Layer£©£¬ÕâÀïµÄ²ãÊÇAUFSÀïµÄ¸ÅÄ×îÖ±¹ÛµÄ·½Ê½¾ÍÊÇ¿´Ò»ÏÂdocker¹Ù·½¸ø³öµÄͼ£º

DockerʹÓÃÁËÒ»ÖÖ½ÐAUFSµÄÎļþϵͳ£¬ÕâÖÖÎļþϵͳ¿ÉÒÔÈÃÄãÒ»²ãÒ»²ãµØµþ¼ÓÐÞ¸ÄÄãµÄÎļþ£¬×îµ×ϵÄÎļþϵͳÊÇÖ»¶ÁµÄ£¬Èç¹ûÐèÒªÐÞ¸ÄÎļþ£¬AUFS»áÔö¼ÓÒ»¸ö¿ÉдµÄ²ã£¨Layer£©£¬ÕâÑùÓкܶàºÃ´¦£¬ÀýÈ粻ͬµÄContainer¿ÉÒÔ¹²Ïíµ×²ãµÄÖ»¶ÁÎļþϵͳ£¨Í¬Ò»¸öKernel£©£¬Ê¹µÃÄã¿ÉÒÔÅÜN¶à¸öContainer¶ø²»ÖÁÓÚÄãµÄÓ²Å̱»¼·±¬ÁË£¡Õâ¸öÖ»¶ÁµÄ²ã¾ÍÊÇImage£¡¶øÈçÄãËù¿´µ½µÄ£¬Ò»¸ö¿ÉдµÄ²ã¾ÍÊÇContainer¡£

ÄÇImageºÍContainerµÄÇø±ðÊÇʲô£¿ºÜ¼òµ¥£¬ËûÃǵÄÇø±ð½ö½öÊÇÒ»¸öÊÇÖ»¶ÁµÄ²ã£¬Ò»¸öÊÇ¿ÉдµÄ²ã£¬Äã¿ÉÒÔʹÓÃdocker commit ÃüÁ½«ÄãµÄContainer±ä³ÉÒ»¸öImage£¬Ò²¾ÍÊÇÌá½»ÄãËùÔËÐеÄContainerµÄÐÞ¸ÄÄÚÈÝ£¬±ä³ÉÒ»¸öеÄÖ»¶ÁµÄImage£¬Õâ·Ç³£ÀàËÆÓÚgit commitÃüÁ¸Ð¾õÕæ°ô£¡

ʵ¼ÊÉÏÕâ¾ÍÊÇDocker¶ÔContainerÓ³ÏñµÄ°æ±¾¹ÜÀí»ùʯ£¬AUFSÎļþϵͳʵÔÚÊÇÌ«ÃÀÃîÁË£¬¸ü¶àϸ½Ú¿ÉÒԲο¼DotCloudµÄÕâÆªÎÄÕ¡£

ÔËÐкÍÍ˳ö

ÔÚÁ˽âÁËImageºÍContainerµÄ¸ÅÄîºó£¬ÎÒÃÇ¿ÉÒÔ¿ªÊ¼ÏÂÔØÒ»¸öImage£¬DockerµÄºÃ´¦¾ÍÊÇÌṩÁËÒ»¸öÀàËÆgithubµÄImage²Ö¿â¹ÜÀí£¬Äã¿ÉÒԷdz£·½±ãpull±ðÈ˵ÄImageÏÂÀ´ÔËÐУ¬ÀýÈ磬ÎÒÃÇ¿ÉÒÔÏÂÔØÒ»¸öUbuntu Image£º

ÕâÀïµÄ13.10ÊÇÒ»¸öTag£¬ÀàËÆÓÚgitµÄtag£¬ÕâÀïµÄtag¿ÉÒÔΪÄãÖÆ¶¨Ò»¸öubuntuµÄ°æ±¾¡£ÏÂÔØÍê³Éºó£¬Ö´ÐÐDocker?imagesÃüÁî¿ÉÒÔÁгöÄãÒѾ­ÏÂÔØ»òÕß×Ô¼º¹¹½¨µÄimage£º£¨ÇëÔÊÐíÎÒʹÓÿɰ®µÄÂíÈü¿Ë :) £©

Äã¿ÉÒÔ¿´µ½ubuntu:13.10µÄ´óСΪ178MB£¬ÒÔ¼°ËüµÄIMAGE ID¡£ ÏÖÔÚÎÒÃÇ¿ªÊ¼ÔËÐÐÒ»¸öContainer£¬ÃüÁîºÜ¼òµ¥£¬ÀýÈçÎÒÃÇÏëÔËÐÐÒ»¸öÖ´ÐÐShellÖն˵ÄContainer£º

ÈçÄã¿´µ½µÄ£¬ÄãÒѾ­½øÈëµ½Ò»¸öShellÀïÃæ£¬¿ÉÒÔÖ´ÐÐÄãÏëÖ´ÐеÄÈκÎÃüÁ¾ÍºÍÔÚubuntuÀïÃæÒ»Ñù£¬½øÈ¥ºóĬÈÏÊÇÔÚ¸ùĿ¼/Ï£¬¿ÉÒÔ¿´µ½¾­µäµÄunix/linuxĿ¼½á¹¹£¬ÒÔ¼°ÄãËùÔËÐеÄbash°æ±¾µÈÐÅÏ¢¡£Äã¿ÉÒÔ¸øÄãµÄContainer¶¨Ò»¸öÃû×Ö£¬Í¨¹ý¨CnameÑ¡ÏÀýÈçÕâÀïÃüÃûÁËshell£¬ÈÕºóÄã¾Í¿ÉÒÔÖ±½ÓÓÃÕâ¸öÃû×ÖÒýÓÃContanier¡£

Í˳öÒ»¸öContainerÒ²ºÜ¼òµ¥£¬ÄãÖ±½Óexit¾ÍºÃÁË¡£ ÆäËû¸ü¶àµÄÃüÁîÕâÀï²»×ö׸Êö£¬ÒòΪ¹Ù·½µÄÎĵµÒѾ­·Ç³£È«Ã棬ÕâÀïÖ»ÊǸøÒ»¸öÖ±¹ÛµÄ³õ²½Ó¡Ïó¡£ÏÂÃæ½øÈëÖ÷Ìâ¡£

ÀûÓÃDocker´î½¨¿ª·¢»·¾³

ÎÒÃÇÏÈ¿´¿´³ÌÐòÔ±Ôڴ¿ª·¢»·¾³Ê±Óöµ½µÄһЩÎÊÌ⣺

Èí¼þ°²×°Âé·³£¬±ÈÈçºÜ¶à¹«Ë¾¶¼Ê¹ÓÃredhat£¬Ò»°ã¿ª·¢ÈËÔ±ÓÖ²»¸øroot£¬°²×°Ò»¸önginx»òÕßÊÇmysql¶¼µÃ×Ô¼ºÏÂÔØ±àÒë°²×° ȨÏÞÎÊÌ⣬ûÓÐroot£¬Ò»Ð©Èí¼þÎÞ·¨ÔËÐУ¬ÀýÈçdnsmasq£»

ûÓÐroot£¬ÎÞ·¨ÐÞ¸Ähosts£¬ÎÞ·¨netstat -nptl£¬ÎÞ·¨tcpdump£¬ÎÞ·¨iptable

¸ôÀëÐԲÀýÈ粻ͬµÄ¿ª·¢ÈËÔ±Èç¹ûÔÚͬһ̨Ö÷»ú»·¾³Ï¹²Ïí¿ª·¢£¬ËäÈ»ÊÇÓû§¸ôÀ룬µ«¶Ë¿ÚÈç¹û²»¹æ·¶¿ÉÄÜ»á³åÍ»£»Í¬Ò»¸öMysqlÈç¹ûȨÏÞ¹ÜÀí²»ºÃºÜÓпÉÄÜÎóɾ±ðÈ˵ÄÊý¾Ý

¿ÉÒÆÖ²ÐԲÀýÈçºÍÉú²ú»·¾³²»Ò»Ö£¬¿ª·¢ÈËÔ±Ö®¼äÒ²ÎÞ·¨¹²Ïí£»¸üÑÏÖØµÄÇé¿öÊǵ±ÓÐÐÂÈËÈëְʱ£¬Í¨³£ÐèÒªÓÖÕÛÌÚÒ»±é¿ª·¢»·¾³£¬ÎÞ·¨¿ìËٴ

ÕâЩÎÊÌâ¿ÉÒÔͨ¹ýÔÚ±¾µØ´î½¨ÐéÄâ»úÀ´½â¾ö£¬µ«ÐéÄâ»úÊÇÒ»¸öºÜ±¿ÖصĽâ¾ö·½°¸£¬DockerÊÇÒ»¸ö·Ç³£ÇáÁ¿¼¶µÄ·½°¸£¬¶øÇÒ»¹ÓµÓÐÐéÄâ»úûÓеÄһЩ¹¦ÄÜ£¬ÀýÈç±ê×¼»¯Image£¬Image¹²ÏíµÈ£¬¸üÖØÒªµÄÊÇ£¬ÀûÓÃDocker£¬Äã¿ÉÒÔÔËÐзdz£¶àµÄÈÝÆ÷£¬ÔÚÄãµÄMacÏ´һ¸ö·Ö²¼Ê½µÄ¿ª·¢»·¾³¸ù±¾²»ÊÇʲô´óµÄÎÊÌ⣬¶øÇÒ¶ÔÄÚ´æ¡¢´ÅÅ̺ÍcpuµÄÏûºÄÏà±È´«Í³µÄÐéÄâ»úÒªµÍÐí¶à£¬ÕâЩ¶¼Òª¹é¹¦ÓÚAUFSºÍLXCÕâÁ½´óÉñÆæµÄ¼¼Êõ¡£

¹¹½¨»ù´¡Image

ÏëÒª´î½¨Ò»¸ö½ÚÊ¡´ÅÅ̿ռäºÍÀ©Õ¹ÐÔÁ¼ºÃµÄ¿ª·¢»·¾³£¬×îÖØÒªµÄµÚÒ»²½¾ÍÊǹ¹½¨Ò»¸ö»ù´¡ÐÔµÄImage£¬±ÈÈçÄãµÄÖ÷Òª¿ª·¢ÓïÑÔÊÇRuby£¬ÄÇôÄã¿Ï¶¨ÐèÒªÒ»¸öÒѾ­°²×°ºÃÒÔϹ¤¾ßµÄ»ù´¡Image£º

ruby

bundler

gem

È»ºóÔÚ´Ë»ù´¡ÉÏ£¬Äã¿ÉÒÔÀ©Õ¹Õâ¸ö»ù´¡µÄImage£¨ÏÂÃæ½Ðbase£©Îª²»Í¬µÄ¿ª·¢»·¾³£¬ÀýÈçrails£¬»òÕßÊÇnats¡£µ±È»£¬ÄãµÄÕâ¸öbaseÒ²¿ÉÒÔ´Ó±ðÈ˵ÄImageÀ©Õ¹¶øÀ´£¬»¹¼ÇµÃÎÒÃǸոÕpullÏÂÀ´µÄubuntu:13.10Õâ¸öImageÂð£¿Äã¿ÉÒÔ´ÓÕâ¸öImageÀ©Õ¹¿ªÊ¼¹¹½¨ÄãµÄbase£¬ÈçºÎ×öÄØ£¿DockerÌṩÁËÒ»ÖÖ±ê×¼»¯µÄDSL·½Ê½£¬ÄãÖ»ÐèÒª±àдһ¸öDockerfile£¬ÔËÐÐdocker buildÖ¸Á¾Í¿ÉÒÔ¹¹½¨Äã×Ô¼ºµÄImage£¬ÕâÓеãÏñMakefileºÍmakeÃüÁîÒ»Ñù£¬Ö»ÊÇ´ó¼ÒÒª¹¹½¨µÄÄÚÈݺ͹¹½¨ÓïÑÔ²»Í¬¡£

DockerfileµÄÓï·¨Çë²Î¿¼Dockerfile Reference£¬ÕâÀï¸ø³öÉÏÃæÌáµ½µÄRuby¿ª·¢µÄbase DockerfileʾÀý£º

ÕâÀïÖ»Óõ½Á˺ܼòµ¥µÄ2¸öÖ¸ÁFROMºÍRUN£¬FROMÖ¸¶¨ÁËÎÒÃÇÒªÀ©Õ¹µÄImage£¬RUNÖ¸¶¨ÎÒÃÇÒªÔËÐеÄÃüÁÕâÀïÊǰ²×°ruby£¬gem¡¢bundlerµÈÈí¼þ¡£Ð´ºÃDockerfileºó£¬ÔËÐÐÒÔÏÂÖ¸Áî¾Í¿ÉÒÔ´´½¨ÄãµÄbase imageÁË£º

-t Ñ¡ÏîÊÇÄãÒª¹¹½¨µÄbase imageµÄtag£¬¾ÍºÃ±Èubuntu:13.10Ò»Ñù ¨Crm Ñ¡ÏîÊǸæËßDockerÔÚ¹¹½¨Íê³Éºóɾ³ýÁÙʱµÄContainer£¬DockerfileµÄÿһÐÐÖ¸Áî¶¼»á´´½¨Ò»¸öÁÙʱµÄContainer£¬Ò»°ãÄãÊDz»ÐèÒªÕâЩÁÙʱÉú³ÉµÄContainerµÄ ÈçÄãËùÏ룬ÎÒÃÇ¿ÉÒÔÏñÔËÐÐubuntu:13.10ÄÇÑùÔËÐÐÎÒÃǵÄbaseÁË£º

ÕâÀïÎÒÃÇʹÓÃdev:baseÕâ¸öImageÔËÐÐÁËÒ»¸öirb½âÊÍÆ÷£¨RubyµÄ½»»¥Ê½½âÊÍÆ÷£©¡£ ÔÚ¹¹½¨ÍêbaseÖ®ºó£¬Äã¿ÉÒÔÒÀÑù»­ºù«¹¹½¨ÄãµÄrails»·¾³£¬ºÜ¼òµ¥£¬Ö»ÐèÒªFROM dev:base£¬È»ºóRUN°²×°ÄãµÄrails×é¼þ¾Í¿ÉÒÔÁË£¬²»ÔÙ׸Êö¡£×îÖÕÄã¿ÉÄܹ¹½¨µÄ¿ª·¢»·¾³ÊÇÕâÑùµÄ£º

ÈçÉÏͼËùʾ£¬baseºÍservice¶¼ÊÇ´Óubutnu:13.10¼Ì³Ð¶øÀ´£¬ËûÃÇ×÷Ϊ²»Í¬µÄ»ù´¡¿ª·¢»·¾³£¬baseÊÇruby¿ª·¢»·¾³£¨Ò²ÐíÃüÃûΪdev:ruby¸üΪºÏÊÊ£¿£©£¬¶øserviceÊÇһЩ»ù´¡Êý¾Ý·þÎñ£¬ÀýÈçmysql£¬memcache£¬ÎÒ½¨Ò齫ÕâЩµÚÈý·½×é¼þ¼¯ÖÐÔÚÒ»¸öContainerÖУ¬ÒòΪËûÃǵĻ·¾³²»¾­³£Ð޸ģ¬¿ÉÒÔ×÷ΪһÖֵײã·þÎñContainerÔËÐУ¬³ý·ÇÄãÐèÒª¹¹½¨·Ö²¼Ê½µÄ·þÎñ£¬ÀýÈçmemcache¼¯Èº£¬ÄÇ¿ÉÒÔ¼ÌÐø²ð·Ö¡£

Ö¸¶¨ImageÈë¿Ú

µ±Äã¹¹½¨ÍêÄãµÄbase ImageºÍÆäËûÓ¦ÓõÄImageÖ®ºó£¬Äã¾Í¿ÉÒÔÆô¶¯ÕâЩImageÁË£¬»¹¼ÇµÃÇ°ÃæÎÒÃǸø³öµÄÔËÐÐÃüÁîÂð£¿

ÕâÀïÎÒÃÇÔËÐÐÁËÒ»¸öbash£¬ÕâÑùÄã¾Í¿ÉÒÔÔÚshellÀïÃæÖ´ÐÐÄãËùÏëÒªÖ´ÐеÄÈκÎÃüÁîÁË£¬µ«ÊÇÎÒÃÇÓÐʱºò²¢²»Ïëÿ´Î¶¼Æô¶¯Ò»¸öshell£¬½Ó×ÅÔÙÔÚshellÀïÃæÆô¶¯ÎÒÃǵijÌÐò£¬±ÈÈçÒ»¸ömysql£¬¶øÊÇÏëÒ»Æô¶¯Ò»¸öÈÝÆ÷£¬mysql·þÎñ¾Í×Ô¶¯ÔËÐÐÁË£¬ÕâºÜ¼òµ¥£¬DockerfileÌṩÁËCMDºÍENTRYPOINTÕâ2¸öÖ¸ÁÔÊÐíÄãÖ¸¶¨Ò»¸öImageÆô¶¯Ê±µÄĬÈÏÃüÁî¡£CMDºÍENTRYPOINTµÄÇø±ðÊÇCMDµÄ²ÎÊý¿ÉÒÔÓÉdocker runÖ¸ÁîÖ¸¶¨µÄ²ÎÊý¸²¸Ç£¬¶øENTRYPOINTÔò²»¿ÉÒÔ¡£ÀýÈçÎÒÃÇÏëÔËÐÐÒ»¸ömemcached·þÎñ£¬¿ÉÒÔÕâôдDockerfile£º

»òÕß¿ÉÒÔÕâôд£º

×¢Òâ²»Òª°ÑmemcachedÆô¶¯Îªºǫ́½ø³Ì£¬¼´¼ÓÉÏ-dÑ¡Ï·ñÔòdockerÆô¶¯µÄcontainer»áÂíÉÏstopµô£¬ÕâµãÎÒÒ²¾õµÃ±È½ÏÒâÍâ¡£ ½Ó×ÅÎÒÃÇbuildÕâ¸öImage£º

ÕâÑù£¬µ±ÄãbuildÍêÄãµÄImageºó£¬Äã¿ÉÒÔÖ±½Ó½«¸ÃImageÔËÐÐΪһ¸öÈÝÆ÷£¬Ëü»á×Ô¶¯Æô¶¯mysql·þÎñ£º

×¢ÒâʹÓÃ-d (detach) Ñ¡ÏÕâÑùÕâ¸öcontainer¾Í»á×÷Ϊºǫ́½ø³ÌÔËÐÐÁË£¬½Ó×ÅÄã¿ÉÒÔʹÓÃdocker psÃüÁî²é¿´ÊÇ·ñÓÐÔÚÔËÐС£

´ÅÅÌÓ³Éä

´ó²¿·ÖʱºòÄã»áÐèÒª°ÑÄãhostÖ÷»ú£¨ËÞÖ÷£©ÉϵÄĿ¼ӳÉäµ½ContainerÀïÃæ£¬ÕâÑùÄã¾Í·Ç³£·½±ãµØÔÚhostÖ÷»úÉϱ༭´úÂ룬ȻºóÖ±½Ó¾Í¿ÉÒÔÔÚContainerÀïÃæÔËÐÐËüÃÇ£¬¶ø²»ÓÃÊÖ¶¯copyµ½ContainerÀïÃæÔÙÖØÆôContainer¡£°´Àí½«hostµÄĿ¼ӳÉäµ½guest£¨Ö¸Container£©ÉÏÓ¦¸ÃÊÇÒ»¼þºÜÈÝÒ×µÄÊÂÇ飬¾ÍºÃÏñVMWareÄÇÑù£¬µ«¿ÉϧµÄÊÇ£¬ÓÉÓÚMacÉϵÄDocker¶àÁËÒ»²ãÐéÄâ»ú£¬Òò´Ë¶àÁËÒ»²ãÖÜÕÛ£¬Äã±ØÐëÏÈVMÉϵÄĿ¼ͨ¹ýsshfs mountµ½host£¨Ö¸Mac£©ÉÏ£¬È»ºóÔÙ½«ÄãµÄĿ¼»òÎļþcopyµ½Õâ¸ömountµÄĿ¼£¬ÔÙ½«VMÉϵÄÕâ¸öĿ¼ӳÉäµ½ContainerÀÌýÆðÀ´±È½ÏÞÖ¿Ú£¬»­¸öͼ»áÇåÎúºÜ¶à¡£

ÈçÉÏͼËùʾ£¬VMÀïÃæµÄ/mnt/sda1/dev/Ŀ¼£¨ÄãÐèÒª×Ô¼º´´½¨£©Í¨¹ýsshfsÃüÁîmountµ½ÁËhostÖ÷»ú£¨Mac£©µÄ~/workspace/dev/Ŀ¼ £¬¶øVMÀïµÄ/mnt/sda1/dev/Ŀ¼ÓÖ±»Ó³Éäµ½ÁËContainerµÄ/src/Ŀ¼Ï£¬ÕâÑùÄã¾Í¿ÉÒÔÔÚContainerÀïÃæµÄ/src/Ŀ¼Ï·ÃÎÊÄãµÄhostÎļþÁË¡£¾ßÌåÈçºÎ×öÄØ£¿Ê×ÏÈÄãÐèÒª°²×°sshfsÃüÁȻºó½«VMµÄpasswordдµ½Ò»¸öÎļþÖУ¬ÀýÈç~/.boot2docker/b2d-passwd£¬ÔÚÓÃsshfsÃüÁîmountÆðVMµÄ/mnt/sda1/devĿ¼£º

½Ó×ÅÄãÔÚrunÒ»¸öContainerµÄʱºòÐèҪͨ¹ý-vÑ¡ÏîÀ´½«/mnt/sda1/dev/Ó³Éäµ½/srcĿ¼£º

ÕâÑùÄã¾Í¿ÉÒÔÔÚÄãµÄContainerµÄ/srcĿ¼Ï¿´µ½ÄãhostÀïµÄÎļþÁË¡£ ´ÅÅÌÓ³É仹ÓÐ2¸öµØ·½ÐèҪעÒ⣺

ÄãµÄÎļþʵ¼ÊÉÏÊÇ´æ´¢ÔÚVMÀïÃæµÄ£¬Ò²¾ÍÊÇ˵ÄãÐèÒª½«ÄãµÄĿ¼»òÕßÎļþcopyµ½VMÀïÃæ£¬ÄãsshfsÖ®ºó£¬¾ÍÊÇcopyµ½~/workspace/devĿ¼ÏÂ

ǧÍò²»Òªsshfs mount·Ç/mnt/sda1ϵÄĿ¼£¬ÒòΪVMÀïÃæÅܵÄÊÇTinyCoreLinux£¬Õâ¸öOSµÄrootfsÊÇÁÙʱÐԵ썷ÅÔÚÄÚ´æµÄ£¬Êµ¼ÊÉϾÍÊÇboot2docker.isoÎļþÀïÃæµÄÒ»¸örootfs£©£¬Òò´ËÆä¸ùĿ¼/ÏµĶ«Î÷£¨°üÀ¨/home£©¸ù±¾²»»á³Ö¾Ã»¯£¬Ö»ÓÐ/mnt/sda1Õâ¸öĿ¼ÏµIJÅÄܳ־û¯¡£Èç¹ûÄã·ÅÔÚ/homeĿ¼Ï£¬Ö»ÒªVMÒ»ÖØÆô£¬¾Í»á¶ªÊ§µÄ£¬/mnt/sda1Ôò²»»á£¬Êµ¼ÊÉϾÍÊÇÄǸö~/.boot2docker-vm.vmdkÎļþ¹ÒÔØµ½ÁË/mnt/sda1Ŀ¼ÏÂ

¶Ë¿ÚÓ³Éä

ºÍ´ÅÅÌÓ³ÉäÒ»Ñù£¬ÄãÓÐʱºò»áÐèÒª½«ContainerµÄ¶Ë¿ÚÓ³Éäµ½hostÖ÷»úÉÏ£¬Í¬Ñùµ°ÌÛµÄÊÇ£¬ÓÉÓÚ¶àÁËÒ»²ãVM£¬¶Ë¿ÚÓ³ÉäÒ²ÏԵñȽÏÂé·³¡£Ê×ÏÈÄãÐèÒªÉèÖÃVirtualBoxµÄ¶Ë¿ÚÓ³É䣬ȻºóÔÙ½«ContainerµÄ¶Ë¿ÚÓ³Éäµ½ÄãµÄVMÀïÃæ£º

¾ßÌåÊÇÕâô×öµÄ£¬Í¨¹ý2ÌõÃüÁ

Ò²¾ÍÊÇ˵ÔÚDocker?runµÄʱºòͨ¹ý-pÑ¡ÏîÖ¸¶¨ÒªÓ³ÉäµÄ¶Ë¿Úµ½VM£¬¶øboot2docker sshÃüÁîÔòÊǽ«VMµÄ8000¶Ë¿ÚÓ³Éäµ½ÁËhost(Mac)µÄ8000¶Ë¿Ú£¬ÕâÑùÄã¾Í¿ÉÒÔͨ¹ýMacµÄlocalhost:8000·ÃÎÊContainerµÄ8000¶Ë¿ÚÁË¡£ Æäʵ£¬ÓÐÁíÒ»ÖÖ½â¾ö·½°¸¾ÍÊÇÄã²»ÓÃÓ³Éäµ½host£¨Mac£©£¬¶øÊÇÖ±½ÓµÇ¼µ½VMÀïÃæ½øÐзÃÎʾͺÃÁË£¬boot2docker ssh¾Í¿ÉÒԵǼµ½VM£¬ÕâÑù¾ÍÀàËÆÓÚÄãµÄhostÊÇUbuntu£¬µ«ÕâÖÖ½â¾ö·½°¸µÄÎÊÌâÊÇÕâ¸öUbuntuÌ«ÈõÁË£¨TinyCoreLinux£©£¬Èç¹ûÄãÔÚÕâ¸öUbuntuÀïÃæ¿ª·¢´úÂ룬»òÕßÊÇÔËÐÐä¯ÀÀÆ÷£¬ÊǷdz£µ°ÌÛµÄÊÂÇ飬¹Ø¼ü»¹ÊÇÕâ¸öUbuntuÊÇÿ´ÎÖØÆô¶¼»á¸´Ô­µÄ£¡ËùÒÔÎÒ½¨Ò黹ÊÇ×ö¶àÒ»²ãÓ³ÉäºÃÁË¡£ ×îºó£¬Êµ¼ÊÉÏÔÚVMÀïÃæ£¬ÄãÊÇ¿ÉÒÔÖ±½Ó·ÃÎÊËùÓеÄContainerµÄ¶Ë¿ÚµÄ£¬ÒòΪVMµ½ContainerµÄÍøÂç¶¼ÊÇÇŽӵġ£

ÆäËûµÄһЩ¿Ó

ÔÚʹÓõĹý³ÌÖУ¬»¹Óöµ½Ò»Ð©²»ÉٵĿӣº

  1. /etc/hostsÎļþÎÞ·¨Ð޸ģ¬ÕâÑùÄã¾Í²»ÄÜ×Ô¼º×öÓòÃû½âÎö
  2. VMµÄϵͳʱ¼äÊÇUTC +0000µÄ£¬¶øÇÒÃ²ËÆÎÞ·¨ÐÞ¸Ä
  3. ContainerµÄIPÎÞ·¨Ö¸¶¨Îª¾²Ì¬IP£¬Òò´Ëÿ´ÎÖØÆôContainerʱ£¬IP¿ÉÄÜ»á±ä»¯

µÚ1¸öÎÊÌâµÄ½â¾ö·½°¸ÊÇͨ¹ý°²×°dnsmasqÈí¼þÀ´×öÓòÃû½âÎö£º

µÚ2¸öÎÊÌâµÄ½â¾ö·½°¸¾ÍÉÔ΢Â鷳Щ£¬ÆðÂëÎÒûÓÐÕÒµ½¸üºÃµÄ½â¾ö·½°¸£¬ÎÒÊǽ«boot2docker.isoÎļþÖØÐÂÖÆ×÷Ò»´ÎÀ´½â¾öÕâ¸öÎÊÌâµÄ£º

µÚÈý¸öÎÊÌâÔÝʱÎÞ·¨½â¾ö£¨¿ÉÄÜÐèÒª±à¼­µ×²ãµÄLXCÅäÖÃÎļþ£©¡£

DockerµÄÏÞÖÆÒÔ¼°ºóÐøµÄһЩÏë·¨

DockerÆäʵ»¹ÊÇÓÐһЩÏÞÖÆµÄ:

ÒªÇóÄãµÄ»·¾³ÊÇLinuxµÄ£¬¶øÇÒÄں˱ØÐëºÜУ¨>= 2.6.27 (29)£©£¬ÕâÆäʵÊÇLXC±¾ÉíµÄÏÞÖÆ£¬ºÍDockerÎÞ¹Ø

DockerµÄContainerĿǰhostÊDz»ÄÜÐ޸ĵ쬵±È»Óнâ¾ö·½°¸£¨dnsmasq£©

DockerµÄContainerÒ²ÔÝʱÎÞ·¨Ö¸¶¨¾²Ì¬

ÓÃdocker×÷Ϊ¿ª·¢»·¾³ÉõÖÁÊÇÉú²ú»·¾³Æäʵ»¹ÓÐºÜ¶àµØ·½ÖµµÃ³¢ÊÔ£º

ÔÚÍŶÓÄÚ²¿¹¹½¨±¾µØµÄ²Ö¿â£¬±ê×¼»¯ËùÓеĿª·¢»·¾³£¬Ê¹µÃÍŶӵÄÐÂÈË¿ÉÒÔ¿ìËÙÉÏÊÖ

ÔÚÉú²ú»·¾³²¿ÊðDocker£¬ÕâÆäʵÊÇPaaSµÄÐéÄ⻯ºÍ×Ô¶¯»¯µÄÒ»ÖÖ·½Ê½£¬ÀûÓÃLXCºÍDockerÄܹ»¸ü±ã½ÝµØÊµÊ©PaaS

³¢ÊÔÓÃDocker×ö·Ö²¼Ê½¼¯ÈºÄ£ÄâºÍ²âÊÔ£¬³É±¾»á¸ü¼ÓµÍÁ®£¬¸ü¼ÓÈÝÆ÷ά»¤

   
2569 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ÉϺ£ »¥ÁªÍø¼Ü¹¹Éè¼ÆÊµ¼ù
ÉϺ£ Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸Àý
µçÑлªÔ´ Éè¼ÆÔ­Àí¡¢½¨Ä£ÓëÖØ¹¹
±±¾© Èí¼þ¼Ü¹¹Éè¼Æ°¸ÀýÓëʵ¼ù
¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ÑÇÐÅ UI½çÃæÉè¼Æ
±±¾© UI½çÃæÉè¼Æ