1. ±³¾°
Docker´ÓÒ»¿ªÊ¼µÄ¸ÅÄî½×¶Î¾ÍÖÂÁ¦ÓÚʹÓÿªÔ´Çý¶¯µÄ·½Ê½À´·¢Õ¹£¬ËüµÄ³É¹¦ÔµÓÚ¹úÍâ³ÉÊìµÄ¿ªÔ´ÎÄ»¯·ÕΧ£¬ÒÔ¼°¿É½è¼øµÄÉçÇøÔËÓª¾Ñ顣ͨ¹ý±¾ÎÄÏêϸµÄ½éÉÜ£¬Èôó¼Ò¿ÉÒÔÈ«ÃæÁ˽âÒ»¸öÏîÄ¿Òà»òÕßÒ»Ïî¼¼ÊõÊÇÈçºÎͨ¹ý¿ªÔ´µÄ·½Ê½·¢Õ¹ÆðÀ´µÄ¡£ÎªÁ˸ü׼ȷµÄÃèÊöDockerµÄÉçÇø×´¿ö£¬ÇëÏÈ¿´Ò»·ÝÀ´×ÔDocker¹Ù·½µÄÊý¾Ý£º

ͼÖÐÊý¾ÝµÄ¿´µãÓУº
1.³¬¹ý500¸ö´úÂë¹±Ï×Õß¡£´úÂëµÄ¹±Ï×ÕßÔÚÉçÇø·¢Õ¹¹ý³ÌÖÐÊǷdz£ÖØÒªµÄ´ß»¯¼Á£¬Ëü»á²»¶Ï¼Ó¿ì²úÆ·µü´úµÄËÙ¶È£¬ÈÃÏîÄ¿¸ü¿ìµÄ½»¸¶µ½×îÖÕÓû§µÄÊÖÀï¡£
2.20¸öȫְ¿ª·¢¡£Ò»°ãµÄ¿ªÔ´ÏîĿһ°ã¶¼²»»áÓÐÈç´Ë¶àµÄȫְ¿ª·¢ÈËÔ±£¬µ«ÊÇDockerÈ´ÓÐ20¸öȫְ¿ª·¢ÈËÔ±À´Çý¶¯Ò»¸öÉçÇøÏîÄ¿¡£ÕâÒ²´Ó²àÃæÖ¤Ã÷Á˹úÍ⹫˾¶Ô¿ªÔ´ÏîÄ¿µÄÖ§³ÖÁ¦¶È£¬ÒÔÖÁÓÚÒ»¼Ò³õ´´¹«Ë¾¶¼ÉáµÃͶÈë20¸öȫְ¿ª·¢À´Íƶ¯¿ªÔ´¼¼ÊõµÄ·¢Õ¹¡£
3.³¬¹ý8000¸ö´´½¨ÔÚGitHubÉϵÄDockerÏà¹ØÏîÄ¿¡£Í¨¹ýÕâ¸ö¹æÄ£¿ÉÒÔ¿´µ½Î§ÈÆDocker¿ÉÒÔʹÓõÄÏîÄ¿ÒѾ·Ç³£·á¸»¡£
4.Docker¼¼Êõ¾Û»á¡£30¸ö¹ú¼Ò³¬¹ý90¸ö³ÇÊоٰ쳬¹ý250¸öDocker¼¼Êõ¾Û»á£¬ÕâÑùµÄ¼¼Êõ¾Û»á»¹ÔÚ²»¶ÏÔö¼Ó£¬Docker¼¼Êõ°®ºÃÕß¿ÉÒÔÔÚÏßÉêÇë³Ð°ì´ËÀ༼Êõ¾Û»á¡£
5.50Íò´ÎµÄboot2dockerÏÂÔØ¡£boot2dockerΪDocker¹Ù·½ÍƼö¿Í»§¶Ë£¬50Íò´ÎÒ²´ú±íµ±Ç°Ç±ÔÚµÄÓû§ÈºÌå¡£

Docker¹«Ë¾Ä¿Ç°ÕýʽԱ¹¤50¶àÃû£¬ÓÉ¿ªÔ´ÀÏÊÖBen Golub(ǰGlusterFS
CEO)Ö÷³ÖÔËÓª¡£ÏÖÔÚÖ÷ÒªÓÐÒÔϼ¸¸öÓ®Àûµã£º
1.Ó¡ÓÐÀ¶¾¨µÄTÐôºÍÌùÖ½µÄÆ·ÅÆ¼ÛÖµ
2.ͨ¹ýDocker Hub·þÎñÌṩSaaSµÄ·Ö·¢·þÎñ
3.ÌṩDocker¼¼ÊõÖ§³ÖºÍÅàѵ
ͨ¹ýÁ˽âDockerµÄÉçÇøÏÖ×´ºÍ¹«Ë¾µÄÔËӪ״¿ö£¬¿ÉÒÔ·¢ÏÖÆäÔÚÔËÓªµÄ·½Ê½Éϲ¢Ã»ÓÐÊ²Ã´ÌØ±ðµÄµØ·½¡£³ýÁËÖ§¸¶¹«Ë¾Ô±¹¤µÄÕý³£¿ªÖ§Í⣬Ëü²¢Ã»ÓÐÏñÒ»°ãÉÌÒµ¹«Ë¾ÄÇÑùÔÚÍÆ¹ãÉÏͶÈëºÜ¶à×ʽð¡£DockerÔÚÍÆ¹ãÉÏÖ÷ÒªÊǽ«¿ªÔ´ÉçÇøºÍÉç½»ÍøÂç×÷Ϊ»ù´¡ÍÆ¹ãÆ½Ì¨£¬½áºÏÈ«Çò·¶Î§µÄDocker¼¼Êõ¾Û»á£¬ÐγÉÁËÁ¼ºÃµÄÁ¼ÐԵĿͻ§»¥¶¯ºÍ¿Ú¿ÚÏà´«µÄÆ·ÅÆÐ§Ó¦¡£ÔÚDockerµÄ¿ªÔ´Àú³ÌÖУ¬Í¨¹ý·ÖÎö¹Û²ìÓû§ÉçÇø¡¢Ô´´úÂë¹ÜÀí¡¢ºÏ×÷»ï°éµÄÉú̬ȦÕâÈýÖÖÐÎʽ£¬ÊáÀí³öÒ»Ì×ʵ¼ù¾ÑéµÄ°¸Àý£¬·½±ã´ó¼Ò²Î¿¼Ñ§Ï°¡£
2. Óû§ÉçÇøÎ¬»¤
Docker¼¼ÊõÊ×ÏÈ¿¼ÂǵÄÊÇÔÚ¼¼ÊõÉçÇøÀïͨ¹ý¸÷ÖÖÇþµÀÀ´ÕÒµ½ËüµÄÓû§£¬¶øµ±Ç°×îÁ÷Ðеļ¼ÊõÉç½»ÍøÂç²»ÊÇTwitter£¬¶øÊÇGitHub¡£ËùÒÔDockerµÚÒ»²½ÊÇÏòGitHubÉÏÌá½»×Ô¼ºµÄ´úÂ뿪ʼÎüÒý×Ô¼ºµÄÓû§µÄ¡£ÎÒÃÇ×Ü˵ÍòÊ¿ªÍ·ÄÑ,ÄÇôDockerµÄµÚÒ»¸öCommitÓ¦¸ÃÊÇʲô£¬ËüÊÇ·ñÐèÒª°üÀ¨²âÊÔ¡¢Óû§Îĵµ¡¢Óû§¿ª·¢Ö¸ÄÏ¡¢Éè¼ÆÀíÄîµÈһϵÁеÄÎĵµºÍ´úÂëÄØ£¿Èç¹û²ÎÕÕ³£¹æµÄ¿ªÔ´ÏîÄ¿£¬ËüÃǶ¼¿¼ÂǵͼºÜÖܵ½£¬ÍêÉÆµÄ´úÂëÎĵµ½á¹¹»áÈÃÓû§µÚÒ»ÑÛ¾ÍÖªµÀÕâÊÇÒ»¸ö³ÉÊìµÄÏîÄ¿£¬ÎÒÃÇÖ»ÒªÓþͿÉÒÔÁË¡£µ«Docker¹«Ë¾È´²»°´Ì×·³öÅÆ£¬µÚÒ»¸öCommit½ö°üÀ¨6¸öÖ÷Îļþ£º

ûÓÐREADME£¬Ã»Óпª·¢»·¾³Ö¸ÄÏ£¬¿ªÊ¼½×¶ÎÓû§ÎÞ·¨ÓÐЧµÄÁ˽âDockerÏîÄ¿¡£µ«ÊÇ£¬ÕâÆäʵҲÊǶԵģ¬ÒòΪÔÚÒ»¸öСÖڵĿªÔ´ÏîÄ¿µÄ³õÆÚ£¬ºÜÄÑÎüÒýµ½ÉçÇøÓû§À´ÎªËü¹±Ï×´úÂë¡£ÔÚ½ÓÏÂÀ´µÄºÜ³¤Ò»¶Îʱ¼ä£¬DockerÖ÷ÒªÊÇÓÉDockerÖ®¸¸Solomon
Hykes¿ª·¢Î¬»¤¡£ÔÚûÓÐÉçÇøÓû§²ÎÓëµÄÇé¿öÏ£¬ËûÿÌì²»·ÖÖçÒ¹µØÌá½»´úÂ룬ҲÐíÊÇΪÁËÉú»î£¬Ò²ÐíÊÇΪÁ˰®ºÃ£¬Solomon
HykesÔÚÆ´ÃüµÄʵÏÖÐÄÖÐÄǸöÄ¿±ê£ºÈÃLXC´´½¨µÄÈÝÆ÷¸üÈÝÒ×ʹÓá£Óõ±ÏÂʱ÷ÖµÄÄǾ仰½²¾ÍÊDz»Íü³õÖÔ¡£

´Ó Solomon Hykes ¹±Ï×´úÂëµÄÇ÷ÊÆÍ¼£¬ÎÒÃÇ¿ÉÒÔ¿´µ½Ö»Óб£Ö¤ÏîÄ¿µÄ»îÔ¾¶È£¨³ÖÐø¹±Ï×´úÂ룩ÄÇôÏîÄ¿²ÅÓпÉÄÜ»ñµÃÓû§µÄÈϿɺ͹Ø×¢¡£ÊÔÏ룬¡°ÈýÌì´òÓ㣬Á½ÌìÉ¹Íø¡±µÄ¿ªÔ´ÏîÄ¿»á¸øÓû§ÔõôÑùµÄ¸Ð¾õ£¿×÷Õß¶¼²»×¨×¢£¬Óû§Ôõô¿ÉÄÜÖÒʵ£¿ÕâÖÖͶÈ룬²¢²»ÊÇżȻÐԵģ¬ÕâÊǹúÍâÒµ½çµÄ¿ªÔ´ÎÄ»¯£¬·Ç³£ÖµµÃÎÒÃÇѧϰ¡£
ÔÚ´úÂë¹±Ï×µÄͬʱ£¬Docker.ioµÄÖ÷Õ¾Ò²ÔÚ2013ÄêµÄ5ÔÂ30ÈÕµÚÒ»´ÎÌá½»µ½GitHub¡£Õâ¾àÀëµÚÒ»ÐдúÂëÌá½»µ½GitHubÒѾÓÐ5¸öÔ¡£×ÜÌåÀ´¿´£¬Docker´ÓÒ»¿ªÊ¼½ö½öÊÇÒ»¸öºÜ¿áµÄÏë·¨£¬µ½ÕæÕýÍê³É²¢¿ÉÒÔ¶ÔÍâ·¢²¼°æ±¾£¬Ò²ÊǾÀúÁËС°ëÄêÖ®¾Ã¡£¿ªÔ´µÄÒâÒå²¢²»Ïñ¹úÄÚ´ó¶àÊý³§ÉÌ·¢²¼¿ªÔ´ÏîĿһÑù£¬Ò»¶¨ÒªÔÚÄÚ²¿Ó¦Óõĺܳɹ¦²Å·¢²¼µ½¼¼ÊõÉçÇø¡£ÎÒÃÇͨ¹ýÒÔÉÏÊý¾Ý£¬¿ÉÒÔºÜÈÝÒ׵Ŀ´³öÀ´£¬ËüÒ»¶¨ÊÇÒ»¸ö³¤ÆÚµÄ¡¢³ÖÐøµÄ¹ý³Ì¡£ÄãԽרעµÄͶÈ룬ÄãµÄÏîĿԽÓпÉÄܳɹ¦¡£
µ±È»£¬Èç¹û½ö½öDockerÖ»ÔÚGitHubÉÏÌṩ´úÂëÀ´ÎüÒýÓû§£¬ÄÇÒ²²»»áÊÇ×î¼ÑµÄʵ¼ù¡£ÔÚÍøÕ¾½¨Á¢ºóµÄÏÂÒ»²½£¬Ëü¿ªÊ¼ÔÚÈ«Çò¸÷´ó³ÇÊеļ¼Êõ¾Û»áÉÏÍÆ¹ã½éÉÜDocker¡£Docker¼¼ÊõÔÚÈ«ÇòÍÆ¹ãµÄ·½·¨ÊÇͨ¹ýÏßϵļ¼Êõ¾Û»á£¬Íâ¼ÓÉç½»ÍøÂçýÌå´«²¥²ÅµÃµ½Á÷Ðеġ£Docker¹ÙÍøÍ¨¹ý·¢²¼¡°´´½¨Docker¼¼Êõ¾Û»áÖ¸ÄÏ¡±£¬Òýµ¼Docker¼¼ÊõµÄ°®ºÃÕß×Ô·¢ÉêÇë³Ð°ì¼¼Êõ¾Û»á¡£Docker¹ÙÍøÖ÷Ҫͨ¹ýÀàËÆTwitter¡¢DockerÖܱ¨¡¢Óû§ÂÛ̳µÈÇþµÀ£¬¼°Ê±µÄ°Ñÿ¸ö³ÇÊм´½«¿ªÊ¼µÄ¼¼Êõ¾Û»áʱ¼äºÍÁªÏµÈË·¢²¼³öÀ´£¬¾Í¿ÉÒÔ°ÑDockerµÄ¼¼ÊõÍÆ¹ã×öÏÂÈ¥¡£²¢ÇÒÕâÖÖÐÎʽµÄ×î´óºÃ´¦Êǿڱ®Ïà´«£¬Æä³¤Î²Ð§Ó¦µÄ½á¹ûÊÇDocker¼¼Êõ¿ªÊ¼ÔÚµ±µØµÄ¼¼ÊõȦµÃµ½¹Ø×¢¡£ÏñÕâÑùµÄ¼¼Êõ¾Û»á£¬Ò»°ã¶¼ÔÚ30µ½200ÈËÖ®¼ä£¬¶ÔÓÚÉÌÒµÏîÄ¿µÄÍÆ¹ãÊÇÎÞ·¨²ÎÕÕÕâÑùÍÆ¹ãµÄ¡£µ«ÕâÖÖÐÎʽ¾ÍÏñÒ»¿ÅÖÖ×ÓÉ¢ÂäÔÚ³ÇÊÐÖм䣬һµ©ÓÐÈ˽éÉÜDocker¼¼Êõµ½Õâ¸ö³ÇÊеļ¼ÊõȦ£¬¾Í»áÓиü¶àµÄÓû§È¥GitHubÉϹØ×¢DockerµÄÏîÄ¿½øÕ¹¡£
3. Ô´´úÂë¹ÜÀí
DockerµÄÔ´ÂëÊǰ´ÕÕÄ£¿é»®·ÖµÄ£¬Ã¿Ò»¸öÄ£¿é¶¼»áµ¥¶À·ÅÔÚÒ»¸öĿ¼Àï¡£²¢ÇÒÿ¸öĿ¼¶¼»á°üº¬Ò»¸öMAINTAINERS.md¡£µ±ÄãÌá½»Ò»¸öPull
RequestµÄʱºò£¬×ÓÄ£¿éµÄά»¤Õ߾ͻáÕ¾³öÀ´»Ø´ð¡°LGTM (Looks Good To Me)¡± ±íʾÒѾ¿´ÁËÄãµÄ´úÂë²¢½ÓÊÜÄãÌá½»µÄ´úÂë¡£
ÿһ¸öÏë²ÎÓëDocker¿ª·¢µÄ¿ª·¢Õߣ¬ÄãÐèÒª½øÈëÒ»¸öÌØÊâµÄĿ¼hack£¬Õâ¸öĿ¼°üÀ¨ÁËËùÓÐÄãÏëÖªµÀµÄ¿ª·¢Ïà¹ØÐÅÏ¢¡£Ëü°Ñ¿ª·¢Õß·ÖΪ4ÀàÈË£¬
1.´úÂë¹±Ï×Õߣ¬ÏêϸָÄÏ¿´CONTRIBUTORS.md¡£
2.´úÂëά»¤Õߣ¬ÏêϸָÄÏ¿´MAINTAINERS.md¡£
3.³ÌÐò´ò°üÕߣ¬ÏêϸָÄÏ¿´PACKAGERS.md¡£
4.¸ºÔð·¢²¼°æ±¾µÄά»¤Õߣ¬ÏêϸָÄÏ¿´RELEASE-CHECKLIST.md¡£
ËùÓеÄÖ¸ÄÏÎĵµ¶¼·Ç³£ÏêϸÍêÕû£¬¿ÉÒÔ×öµ½¿´Íê´ËÎĵµ¾Í¿ÉÒÔ¿ªÊ¼ÏàÓ¦½ÇÉ«µÄÈÎÎñ¡£³ýÁËÕâЩÎĵµÖ®Í⣬hackĿ¼»¹°üÀ¨ÁË·¢²¼£¬¿ª·¢£¬²âÊԵȻ·½ÚÐèÒªµÄ¸¨Öú½Å±¾£¬Èÿª·¢Õß¿ÉÒԵõ½ºÜ¶à¿ª·¢ÉϵıãÀû¡£
Docker´ÓÒ»¿ªÊ¼¾ÍÊÇÎ§ÈÆLXC¿ª·¢µÄ£¬µ«ÔÚ°æ±¾Îȶ¨ºó£¬Ê¹ÓÃGoÖØÐ´ÁËÒ»Ì×ÀàLXC½Ó¿ÚʵÏÖ¡£Ò²¾ÍÊÇ
libcontainer ÏîÄ¿¡£ËüµÄ´úÂë¹ÜÀí·½Ê½ÓëÉÏÃæµÄDockerÔ´´úÂë¹ÜÀí·½Ê½Ò»Ñù£¬¿ª·¢Õß¿ÉÒÔºÜÈÝÒ׵ĵ¼Èëµ½×ÓÏîÄ¿libcontainerµÄ¿ª·¢¡£Ò»ÖµĹÜÀí·½·¨¿ÉÒÔÌá¸ßÁ÷³ÌµÄ¸´Óã¬ÕâÖÖ¹ÜÀí·½Ê½Ï£ÍûÄܵõ½´ó¼ÒµÄ½è¼ø²Î¿¼¡£
4. ´´½¨ºÏ×÷»ï°éÉú̬Ȧ
Ê×ÏÈ£¬Docker´ÓÒ»¿ªÊ¼Ê¹ÓÃUbuntu°æ±¾×÷Ϊ¿ª·¢»·¾³£¬Ö÷ÒªÊÇUbuntuÉÏÖ§³Öaufs(advanced
multi layered unification filesystem)Îļþϵͳ¡£ËùÒÔ£¬Docker¶ÔUbuntuµÄÖ§³ÖÊÇ×îºÃµÄ¡£

»¹ÓоÍÊÇ´ó¼Ò·Ç³£ÊìϤµÄGoogleµÄGCE£¬ÔÚûÓÐDocker֮ǰ£¬¾ÍÒѾʹÓÃ×Ô¼º¿ª·¢µÄÀàLXCÈÝÆ÷¡£ÔÚÓÐÁËDockerÖ®ºó,
Google¿ª·¢ÁËkubernetesÀ´¹ÜÀíDocker¡£

ÉÌÒµ°æ±¾LinuxµÄÁìµ¼ÕßRedHat£¬Ò²ÊÇDockerÉú̬Ȧ·Ç³£ÖØÒªµÄºÏ×÷»ï°é¡£²¢ÇÒËüÖ§³ÖµÄFedoraÉçÇø¡¢CentOSÉçÇø»á¶ÔÍÆ¹ãDocker¼¼ÊõÆðµ½¹Ø¼üÐÔ×÷Óá£

»¹ÓоÍÊÇOpenStackµÄ½¨Á¢ÕßRackspace£¬ÔÚ»ìºÏÔÆ½â¾ö·½°¸ÉϾßÓÐÈ«ÇòÁìµ¼µØÎ»¡£DockerÓëËüµÄºÏ×÷£¬¿ÉÒÔ°ïÖúDocker¼¼ÊõÔÚ»ìºÏÔÆµÄ½â¾ö·½°¸Öеõ½Íƹ㡣

×îºó¾ÍÊÇ¿ªÔ´PaaSÏîÄ¿DEIS£¬»ùÓÚDockerºÍCoreOS¼¼Êõ¹¹½¨µÄÀàÈçHeroku·¢²¼Á÷³ÌµÄPaaSÓ¦Óá£ÓëËüµÄºÏ×÷£¬¿ÉÒÔÈøü¶àµÄÆóÒµ¿´µ½Ò»¸öʹÓÃDocker¼¼ÊõµÄ·¶±¾¡£

5. ½áÂÛ

DockerµÄ¿ªÔ´Ö®Â·¿ÉÒÔ˵ÊÇ¿ªÔ´ÏîÄ¿µÄ×î¼Ñʵ¼ù£¬Ëü´ÓŒÅ˿˲¼ä±äΪ¸ß¸»Ë§µÄÀú³Ì²¢²»ÊÇżȻ¡£DockerµÄ¿ªÔ´Ö®Â·»¹ÔÚ½øÐÐÖУ¬´ÓËüµÄģʽÖÐÎÒÃÇ¿ÉÒÔѧϰµ½µÄ¶«Î÷²¢²»½ö½ö¾ÖÏÞÓÚÒÔÉÏÂÞÁеļ¸µã£¬¶ÁÕß¿ÉÒÔÔÚ²ÎÓ뿪ԴÏîÄ¿µÄ¹ý³ÌÖжàÌå»á£¬ÕÒµ½×Ô¼ºµÄ¡°Í´µã¡±£¬È»ºó²Î¿¼DockerµÈ¿ªÔ´ÏîÄ¿µÄ×ö·¨£¬ÏàÐÅ¿ÉÒԺܿì½â¾öÄãµÄÎÊÌâ¡£
ÉîÈëdz³öDocker£¨ËÄ£©£ºDockerµÄ¼¯³É²âÊÔ²¿ÊðÖ®µÀ
1. ±³¾°
Ãô½Ý¿ª·¢ÒѾÁ÷ÐÐÁ˺ܳ¤Ê±¼ä£¬Èç½ñÓÐÔ½À´Ô½¶àµÄÆóÒµ¿ªÊ¼¼ùÐÐÃô½Ý¿ª·¢ËùÌᳫµÄÒÔÈËΪÖÐÐÄ¡¢µü´ú¡¢ÑÐò½¥½øµÄ¿ª·¢ÀíÄî¡£ÔÚÕâÑùµÄ³¡¾°ÏÂÒýÈëDocker¼¼Êõ£¬Ê×ҪĿµÄ¾ÍÊÇʹÓÃDockerÌṩµÄÐéÄ⻯·½Ê½£¬¸ø¿ª·¢ÍŶӽ¨Á¢Ò»Ì׿ÉÒÔ¸´ÓõĿª·¢»·¾³£¬Èÿª·¢»·¾³¿ÉÒÔͨ¹ýImageµÄÐÎʽ·ÖÏí¸øÏîÄ¿µÄËùÓпª·¢³ÉÔ±£¬ÒÔ¼ò»¯¿ª·¢»·¾³µÄ´î½¨¡£µ«ÊÇ£¬ÔÚûÓÐDocker¼¼Êõ֮ǰ¾ÍÒѾÓÐÀàÈçVagrantµÄ¿ª·¢»·¾³·Ö·¢¼¼Êõ£¬Èí¼þ¿ª·¢ÕßÒ»Ñù¿ÉÒÔ´´½¨ÀàËÆÐèÇóµÄ»·¾³ÅäÖÃÁ÷³Ì¡£ËùÒÔÔÚ¿ª·¢»·¾³·½Ã棬Docker¼¼ÊõµÄÓÅÊÆ²¢²»Äܺܺõķ¢»Ó³öÀ´¡£±ÊÕßÈÏΪDockerµÄÓŵãÔÚÓÚ¿ÉÒÔ¼ò»¯CI£¨³ÖÐø¼¯³É£©¡¢CD£¨³ÖÐø½»¸¶£©µÄ¹¹½¨Á÷³Ì£¬Èÿª·¢Õ߰Ѹü¶àµÄ¾«Á¦ÓÃÔÚ¿ª·¢ÉÏ¡£
ÿ¼Ò¹«Ë¾¶¼ÓÐ×Ô¼ºµÄ¿ª·¢¼¼ÊõÕ»£¬ÎÒÃÇÐèÒª½áºÏʵ¼ÊÇé¿ö¶ÔÆä½øÐгÖÐø¸Ä½ø£¬ÓÅ»¯×Ô¼ºµÄ¹¹½¨Á÷³Ì¡£µ±ÎÒÃÇ×¼±¸Âõ³öµÚÒ»²½Ê±£¬ÎÒÃÇÊ×ÏÈҪȷÁ¢Ò»Õʹ½¨À¶Í¼£¬×öµ½ÐØÓгÉÖñ£¬ÕâÑù½ÓÏÂÀ´µÄÊÂÇé²Å»áºÜ¿ìʵÏÖ¡£

ÕâÕÅʱÐòͼ¸ÅÀ¨ÁËĿǰÃô½Ý¿ª·¢Á÷³ÌµÄËùÓл·½Ú¡£½áºÏÒÔÉÏʱÐòͼ¸ø³öµÄÀ¶Í¼¿ò¼Ü£¬±¾ÎĵÄÖØµãÊǽ²½âÒýÈëDocker¼¼Êõµ½Ã¿¸ö»·½ÚÖеÄʵ¼ù¾Ñé¡£
2. ´´½¨³ÖÐø·¢²¼µÄÍŶÓ
¿ª·¢ÍŶÓÔÚÒýÈëDocker¼¼ÊõµÄʱºò£¬×î´óµÄÎÊÌâÊÇûÓпÉ×ñѵÄÒµ½ç±ê×¼¡£´ó¼Ò³£³£ÒÔ×î¼Ñʵ¼ùΪ¿ÚºÅ£¬ÒýÈë¶àÖÖ¹¤¾ßÁ´£¬µ¼ÖÂÔÚʹÓÃDockerµÄ¹ý³ÌÖÐûÓвàÖØµã¡£Éæ¼°µ½DockerÑ¡ÐÍ£¬ÓÖÔÚ¹¤¾ßѧϰÉÏ»¨·Ñ´óÁ¿Ê±¼ä£¬¶ø²»ÊÇÑ¡ÓúÏÊʵŤ¾ßÒÔ×齨¿É³ÖÐø·¢²¼²úÆ·µÄ¿ª·¢ÍŶӡ£»ùÓÚÕâÑùµÄ³¡¾°£¬ÎÒÃÇ¿ÉÒÔ°Ñ¡°¼òµ¥Ò×Óá±µÄÔÔò×÷ΪÆÀÅбê×¼£¬ÒýÈëµ½Docker¼¼Êõ¹¤¾ßÑ¡Ð͵IJο¼ÖС£¿ª·¢ÍŶÓÔÚÒýÈëDocker¼¼ÊõµÄ¹ý³ÌÖУ¬Ê×ÏÈÐèÒª½â¾öµÄÊÇÈÃÍŶӳÉÔ±¾¡¿ìÕÆÎÕDockerÃüÁîÐеÄʹÓá£ÔÚÊìϤÁËDockerÃüÁîÐÐÖ®ºó£¬ÍŶÓÐèÒª½â¾ö¼¸¸ö¹Ø¼üÎÊÌâ¾ßÌåÈçÏ£º
1£©Base ImageµÄÑ¡Ôñ, ±ÈÈçphusion-baseimage
2£©ÅäÖùÜÀíDocker¾µÏñµÄ¹¤¾ßµÄÑ¡Ôñ£¬±ÈÈçAnsible¡¢Chef¡¢Puppet
3£©HostÖ÷»úϵͳµÄÑ¡Ôñ£¬±ÈÈçCoreOS¡¢Atomic¡¢Ubuntu
Base Image°üÀ¨Á˲Ù×÷ϵͳÃüÁîÐкÍÀà¿âµÄ×îС¼¯ºÏ£¬Ò»µ©ÆôÓã¬ËùÓÐÓ¦Óö¼ÐèÒªÒÔËüΪ»ù´¡´´½¨Ó¦ÓþµÏñ¡£Ubuntu×÷Ϊ¹Ù·½Ê¹ÓõÄĬÈϰ汾£¬ÊÇĿǰ×îÒ×Óõİ汾£¬µ«ÏµÍ³Ã»Óо¹ýÓÅ»¯£¬¿ÉÒÔ¿¼ÂÇʹÓõÚÈý·½Óл®¹ýµÄ°æ±¾£¬±ÈÈçÈçphusion-baseimage¡£¶ÔÓÚÑ¡ÔñRHEL¡¢CentOS·ÖÖ§µÄBase
Image£¬Ìṩ°²È«¿ò¼ÜSELinuxµÄʹÓᢿ鼶´æ´¢ÎļþϵͳdevicemapperµÈ¼¼Êõ£¬ÕâÐ©ÌØÐÔÊDz»ÄܺÍUbuntu·Ö֧ͨÓõġ£ÁíÍâÐèҪעÒâµÄÊÇ£¬Ê¹ÓõIJÙ×÷ϵͳ·ÖÖ§²»Í¬£¬Æä²Ã¼ôϵͳµÄ·½·¨Ò²ÍêÈ«²»Í¬£¬ËùÒÔ´ó¼ÒÔÚÑ¡Ôñ²Ù×÷ϵͳʱһ¶¨ÒªÉ÷ÖØ¡£
ÅäÖùÜÀíDocker¾µÏñµÄ¹¤¾ßÖ÷ÒªÓÃÓÚ»ùÓÚDockerfile´´½¨ImageµÄÅäÖùÜÀí¡£ÎÒÃÇÐèÒª½áºÏ¿ª·¢ÍŶӵÄÏÖ×´£¬Ñ¡ÔñÒ»¿îÍŶÓÊìϤµÄ¹¤¾ß×÷ΪͨÓù¤¾ß¡£ÅäÖù¤¾ßÓкܶàÖÖÑ¡Ôñ£¬ÆäÖÐAnsible×÷ΪºóÆðÖ®Ð㣬ÔÚÅäÖùÜÀíµÄʹÓÃÖÐÌåÑé·Ç³£¼òµ¥Ò×Óã¬ÍƼö´ó¼Ò²Î¿¼Ê¹Óá£
HostÖ÷»úϵͳÊÇDockerºǫ́½ø³ÌµÄÔËÐл·¾³¡£´Ó¿ª·¢½Ç¶ÈÀ´¿´£¬Ëü¾ÍÊÇһ̨ÆÕͨµÄµ¥»úOSϵͳ£¬ÎÒÃǽö²¿ÊðDockerºǫ́½ø³ÌÒÔ¼°¼¯Èº¹¤¾ß£¬ËùÒÔÏ£ÍûHostÖ÷»úϵͳµÄ¿ªÏúԽСԽºÃ¡£ÕâÀïÍÆ¼ö¸ø´ó¼ÒµÄHostÖ÷»úϵͳÊÇCoreOS£¬ËüÊÇĿǰ¿ªÏú×îСµÄÖ÷»úϵͳ¡£ÁíÍ⣬»¹ÓкìñµÄ¿ªÔ´AtomicÖ÷»úϵͳ£¬ÓлùÓÚFedora¡¢CentOS¡¢RHEL¶à¸ö°æ±¾µÄ·ÖÖ§Ñ¡Ôñ£¬Ò²ÊDz»´íµÄºòÑ¡¶ÔÏó¡£ÁíÍâÒ»ÖÖÇé¿öÊÇÑ¡Ôñ×îС°²×°²Ù×÷ϵͳ£¬×Ô¼º¶¨ÖÆHostÖ÷»úϵͳ¡£Èç¹ûÄãµÄÍŶÓÓÐÕâ¸öʵÁ¦£¬¿ÉÒÔ¿¼ÂÇ×Ô¼º¶¨ÖÆÕâÑùµÄϵͳ¡£
3. ³ÖÐø¼¯³ÉµÄ¹¹½¨ÏµÍ³
µ±¿ª·¢ÍŶӰѴúÂëÌá½»µ½GitÓ¦ÓòֿâµÄÄÇÒ»¿Ì£¬ÎÒÏàÐÅËùÓеĿª·¢Õß¶¼Ï£ÍûÓÐÒ»¸öϵͳÄܰïÖúËûÃǰÑÕâ¸öÓ¦ÓóÌÐò²¿Êðµ½Ó¦Ó÷þÎñÆ÷ÉÏ£¬ÒÔ½ÚÊ¡²»±ØÒªµÄÈ˹¤³É±¾¡£µ«ÊÇ£¬¸´ÔÓµÄÓ¦Óò¿Ê𳡾°£¬ÈÃÕâ¸öÏ뷨ʵÏÖÆðÀ´²¢²»¼òµ¥¡£
Ê×ÏÈ£¬ÎÒÃÇÐèÒªÓÐÒ»¸öÖ§³ÖDockerµÄ¹¹½¨ÏµÍ³£¬ÕâÀïÍÆ¼öJenkins¡£ËüµÄÖ÷ÒªÌØµãÊÇÏîÄ¿¿ªÔ´¡¢·½±ã¶¨ÖÆ¡¢Ê¹Óüòµ¥¡£Jenkins¿ÉÒÔ·½±ãµÄ°²×°¸÷ÖÖµÚÈý·½²å¼þ£¬´Ó¶ø·½±ã¿ì½ÝµÄ¼¯³ÉµÚÈý·½µÄÓ¦Óá£

ͨ¹ýJenkinsϵͳµÄJob´¥·¢»úÖÆ£¬ÎÒÃÇ¿ÉÒÔ·½±ãµÄ´´½¨¸÷ÖÖÀàÐ͵ÉJobÓÃÀý¡£µ«È±·¦Í³Ò»±ê×¼µÄJobÓÃÀýʹÓ÷½·¨£¬»áµ¼ÖÂÏîÄ¿JobÓÃÀýʹÓõĻìÂÒ£¬ÄÑÓÚ¹ÜÀíά»¤¡£ÕâÒ²Èÿª·¢ÍŶÓÎÞ·¨³ä·ÖÀûÓúü¯³ÉϵͳµÄÓÅÊÆ£¬µ±È»ÕâÒ²²»ÊÇÎÒÃÇÆÚÍûµÄ½á¹û¡£ËùÒÔ£¬Ãô½Ýʵ¼ù·½·¨Ìá³öÁËÒ»¸ö¿ÉÒÔ³ÖÐø½»¸¶µÄ¸ÅÄî
DeploymentPipeline£¨¹ÜµÀ²¿Ê𣩡£Í¨¹ýDocker¼¼Êõ£¬ÎÒÃÇ¿ÉÒԺܷ½±ãµÄÀí½â²¢ÊµÊ©Õâ¸ö·½·¨¡£
JenkinsµÄ¹ÜµÀ²¿Êð°Ñ²¿ÊðµÄÁ÷³ÌÐÎÏ󻯳ÉΪһ¸ö³¤³¤µÄ¹ÜµÀ£¬Ã¿¼ä¸ôһС¶Î»áÓÐÒ»¸ö½Úµã£¬Ò²¾ÍÊÇJob£¬Íê³ÉÕâ¸öJob¹¤×÷ºó²Å¿ÉÒÔ½øÈëÏÂÒ»¸ö»·½Ú¡£ÐÎʽÈçÏ£º

´ó¼Ò¿´µ½ÉÏͼÖеÄÿһ¿éÃæ°åÔÚÒýÈëDocker¼¼ÊõÖ®ºó£¬¾Í¿ÉÒÔʹÓÃDocker°ÑÈÎÎñÄ£¿é»¯£¬È»ºó×ö³ÉÓÐÕë¶ÔÐÔµÄImageÓÃÀ´ÅÜÐèÒªµÄÈÎÎñ¡£Ã¿Ò»¸öÈÎÎñImageµÄ´´½¨¹¤×÷ÓÖ¿ÉÒÔÔÚ¿ª·¢Õß×Ô¼ºµÄ»·¾³ÖÐÍê³É£¬ÀàËÆµÄ³¡¾°¿ÉÒԲο¼ÏÂͼ£º

ËùÒÔ£¬Ê¹ÓÃDockerÖ®ºó£¬ÈÎÎñµÄÄ£¿é»¯ºÜ×ÔÈ»µØ±»¶¨Òå³öÀ´¡£Í¨¹ý¹ÜµÀͼ£¬¿ÉÒԲ鿴ÿһ²½µÄÖ´ÐÐʱ¼ä¡£¿ª·¢ÕßÒ²¿ÉÒÔÕë¶ÔÈÎÎñµÄÐèÒª£¬ÎªÃ¿Ò»¸öÈÎÎñ¶¨ÒåÑϸñµÄÐÔÄܱê×¼£¬ÒÑ×÷Ϊ֮ºó²âÊÔ¹¤×÷µÄ²Î¿¼»ù´¡¡£
4.×î¼ÑµÄ·¢²¼»·¾³
Ó¦Óþ¹ý²âÊÔ£¬½ÓÏÂÀ´ÎÒÃÇÐèÒª°ÑËü·¢²¼µ½²âÊÔ»·¾³ºÍÉú²ú»·¾³¡£Õâ¸ö½×¶ÎÖÐÈçºÎ¸üºÏÀíµØÊ¹ÓÃDockerÒ²ÊÇÒ»¸öÄѵ㣬¿ª·¢ÍŶÓÐèÒª¿¼ÂÇÈçºÎ´òÔìÒ»¸ö¿ÉÉìËõÀ©Õ¹µÄ·Ö·¢»·¾³¡£Æäʵ£¬Õâ¸ö»·¾³¾ÍÊÇ»ùÓÚDockerµÄ˽ÓÐÔÆ£¬¸ü½øÒ»²½ÎÒÃÇ¿ÉÄÜÆÚÍûµÄÊÇÌṩAPI½Ó¿ÚµÄPaaSÔÆ·þÎñ¡£ÎªÁ˹¹½¨´ËPaaS·þÎñ£¬ÕâÀïÍÆ¼ö¼¸¿î·Ç³£ÈÈÃŵŤ¾ß·½±ã´ó¼Ò²Î¿¼£¬Í¨¹ýÕâЩ¹¤¾ß¿ÉÒÔ¶¨ÖƳöÆóҵ˽ÓеÄPaaS·þÎñ¡£
1) Apache Mesos + marathon
Apache MesosϵͳÊÇÒ»Ì××ÊÔ´¹ÜÀíµ÷¶È¼¯ÈºÏµÍ³£¬Éú²ú»·¾³Ê¹ÓÃËü¿ÉÒÔʵÏÖÓ¦Óü¯Èº¡£´ËϵͳÊÇÓÉTwitter·¢ÆðµÄApache¿ªÔ´ÏîÄ¿¡£ÔÚÕâ¸ö¼¯ÈºÏµÍ³ÀÎÒÃÇ¿ÉÒÔʹÓÃZookeeper¿ªÆô3¸öMesos
master·þÎñ£¬µ±3¸öMesos masterͨ¹ýzookeeper½»»»ÐÅÏ¢ºó»áÑ¡³öLeader·þÎñ£¬Õâʱ·¢¸øÆäËüÁ½Ì¨Slave
Messos MasterÉϵÄÇëÇó»áת·¢µ½Messos master Leader·þÎñ¡£Mesos slave·þÎñÆ÷ÔÚ¿ªÆôºó»á°ÑÄÚ´æ¡¢´æ´¢¿Õ¼äºÍCPU
×ÊÔ´ÐÅÏ¢·¢¸øMessos master¡£MesosÊÇÒ»¸ö¿ò¼Ü£¬ÔÚÉè¼ÆËüµÄʱºòÖ»ÊÇΪÁËÓÃËüÖ´ÐÐJobÀ´×öÊý¾Ý·ÖÎö¡£Ëü²¢²»ÄÜÔËÐÐÒ»¸ö±ÈÈçWeb·þÎñNginxÕâÑù³¤Ê±¼äÔËÐеķþÎñ£¬ËùÒÔÎÒÃÇÐèÒª½èÖúmarathonÀ´Ö§³ÖÕâ¸öÐèÇó¡£marathonÓÐ×Ô¼ºµÄREST
API£¬ÎÒÃÇ¿ÉÒÔ´´½¨ÈçϵÄÅäÖÃÎļþDocker.json£º
{ "container": { "type": "DOCKER", "docker": { "image": "libmesos/ubuntu" } }, "id": "ubuntu", "instances": "1", "cpus": "0.5", "mem": "512", "uris": [], "cmd": "while sleep 10; do date -u +%T; done" } |
È»ºóµ÷ÓÃ
curl -X POST -H "Content-Type: application/json"
http://<master>:8080/v2/apps -d@Docker.json
ÎÒÃǾͿÉÒÔ´´½¨³öÒ»¸öWeb·þÎñÔÚMesos¼¯ÈºÉÏ¡£¶ÔÓÚMarathonµÄ¾ßÌå°¸Àý£¬¿ÉÒԲο¼¹Ù·½°¸Àý¡£

2) Google Kubernetes
GoogleµÄÒ»¸öÈÝÆ÷¼¯Èº¹ÜÀí¹¤¾ß£¬ËüÌá³öÁ½¸ö¸ÅÄ
Pods£¬Ã¿¸öPodÊÇÒ»¸öÈÝÆ÷µÄ¼¯ºÏ²¢²¿ÊðÔÚͬһ̨Ö÷»úÉÏ£¬¹²ÏíIPµØÖ·ºÍ´æ´¢¿Õ¼ä£¬±ÈÈçApache£¬RedisÖ®Àà·ÖΪһ×éÈÝÆ÷¼¯ºÏ¡£
Labels£¬Ìṩ·þÎñ±êÇ©£¬·½±ãPodÈÝÆ÷Ö®¼äµÄµ÷ÓÃÐ×÷¡£
ͨ¹ý¹Ù·½¼Ü¹¹Éè¼ÆÎĵµµÄ½éÉÜ£¬¿ÉÒÔÏêϸµÄÁ˽âÿ¸ö×é¼þµÄÉè¼ÆË¼Ïë¡£ÕâÊÇĿǰҵ½çΨһÔÚÉú²ú»·¾³²¿Êð¾ÑéµÄ»ù´¡ÉÏÍÆ³öµÄ¿ªÔ´ÈÝÆ÷·½°¸£¬¿ÉÒÔÔ¤¼ûµ½Î´À´»á³ÉΪÈÝÆ÷¹ÜÀíϵͳµÄÐÐÒµ²Î¿¼±ê×¼¡£

3) Panamax
ÔÚÁÕÀÅÂúÄ¿µÄ¼¯Èº¹ÜÀí¹¤¾ßÃæÇ°£¬ÈçºÎ¹ÜÀíµ¥»úµÄDockerÈÝÆ÷Ò²ÊÇÒ»¸öÐèÒª½â¾öÎÊÌâ¡£ÒòΪDockerÕ¼ÓÃÄÚ´æÐ¡£¬ÔÚµ¥»ú·þÎñÆ÷Éϲ¿Êð³É°ÙÉÏǧ¸öÈÝÆ÷Ò²²»×ãÎªÆæ¡£PanamaxÌṩÈËÐÔ»¯µÄWeb¹ÜÀí½çÃæÓÃÀ´°²×°Èí¼þÈò¿Êð±äµÃ¸ü¼òµ¥¡£²¢ÇÒ£¬Panamax»¹Ìṩ·á¸»µÄÈÝÆ÷Ä£°å£¬ÈÃÔÚÏß´´½¨·þÎñ³ÉΪ¿ÉÄÜ¡£±ÈÈçµ½DigitalOceanÉêÇëһ̨Ö÷»ú£¬°²×°Ò»Ì×PanamaxÆô¶¯Îªºǫ́·þÎñ¡£È»ºóͨ¹ýPanamax
Web½çÃæ°²×°Nginx¡¢Mysql¡¢RedisµÈ·þÎñ¾µÏñ£¬ÕâÑù¿ÉÒÔ¿ìËٴÉú²ú»·¾³µÄÓ¦Óó¡¾°¡£ËùÓеIJÙ×÷¶¼ÊÇÔÚWeb½çÃæÉÏÍê³É£¬¿ª·¢ÕßÖ»ÐèÒª¹Ø×¢¿ª·¢±¾Éí¼´¿É¡£

5. ½áÂÛ
DockerµÄ¼¯³É²¿Êð·½°¸£¬ÊÇÒ»Ì×Áé»î¼òµ¥µÄ¹¤¾ß¼¯½â¾ö·½°¸¡£Ëü¿Ë·þÁË֮ǰ¼¯Èº¹¤¾ß¸´ÔÓ¡¢ÄÑÓõÄÀ§¾³£¬Ê¹ÓÃͳһµÄDockerÓ¦ÓÃÈÝÆ÷µÄ¸ÅÄÊðÈí¼þÓ¦Óá£Í¨¹ýÒýÈëDocker¼¼Êõ£¬¿ª·¢ÍŶÓÔÚÃæ¶Ô¸´ÔÓµÄÉú²ú»·¾³ÖУ¬¿ÉÒÔ½áºÏ×Ô¼ºÍŶӵÄʵ¼ÊÇé¿ö£¬¶¨ÖƳöÊʺÏ×Ô¼º»ù´¡¼Ü¹¹µÄÅäÌ×Èí¼þ·¢²¼·½°¸¡£
|