Docker
¡ª ÔÆÊ±´úµÄ³ÌÐò·Ö·¢·½Ê½
Ҫ˵×î½üÒ»ÄêÔÆ¼ÆËãÒµ½çÓÐʲô´óʼþ£¿Google Compute EngineµÄÕýʽ·¢²¼£¿AzureÈ뻪£¿»¹ÊÇAWSÂ䵨Öйú£¿ÁôÔÚÿ¸öÈË´óÄÔÖеÄÓ¡Ïó¿ÉÄܸ÷²»Ïàͬ£¬µ«ÒªÊÇÈñÊÕßÀ´ÅÅÃûµÄ»°ÄÇôDocker¾ø¶ÔÓ¦¸ÃËãÊǵÚһλµÄ¡£
Èç¹ûÄã֮ǰÌý˵¹ýËüµÄ»°£¬ÄÇôҲÐíÄã»á˵¡°Ã»´í£¬¾ÍÊÇËü¡±£¬ÒòΪ¼¸ºõÊÀ½ç¸÷µØµÄ¿ª·¢¡¢ÔËά¶¼ÔÚ̸ÂÛ×ÅDocker£»Èç¹ûÄ㻹ûÌý˵¹ýDocker£¬ÄÇôÎÒ
ÕæµÄ½¨ÒéÄ㻨ÉÏ10·ÖÖÓÀ´ÔĶÁ±¾ÎÄ¡£
1. Docker¼ò½é
1.1. ʲôÊÇDocker£¿
DockerÊÇÒ»¸öÖØÐ¶¨ÒåÁ˳ÌÐò¿ª·¢²âÊÔ¡¢½»¸¶ºÍ²¿Êð¹ý³ÌµÄ¿ª·Åƽ̨¡£DockerÒ²ÊÇÈÝÆ÷¼¼ÊõµÄÒ»ÖÖ£¬ËüÔËÐÐÓÚLinuxËÞÖ÷»úÖ®ÉÏ£¬Ã¿¸öÔËÐÐ
µÄÈÝÆ÷¶¼ÊÇÏ໥¸ôÀëµÄ£¬Ò²±»³ÆÎªÇáÁ¿¼¶ÐéÄâ¼¼Êõ»òÈÝÆ÷ÐÍÐéÄâ¼¼Êõ¡£¶øÇÒËüÓеãÀàËÆJavaµÄ±àÒëÒ»´Î£¬µ½´¦ÔËÐУ¬DockerÔò¿ÉÒÔ³ÆÎª¹¹½¨Ò»´Î£¬ÔÚ¸÷ÖÖ
ƽ̨ÉÏÔËÐУ¬°üÀ¨±¾µØ·þÎñÆ÷ºÍÔÆÖ÷»úµÈ£¨Build once£¬run anywhere£©¡£
ÈÝÆ÷¾ÍÊǼ¯×°Ï䣬ÎÒÃǵĴúÂë¶¼±»´ò°üµ½¼¯×°ÏäÀDocker¾ÍÊǰáÔ˹¤£¬°ïÄã°ÑÓ¦ÓÃÔËÊäµ½ÊÀ½ç¸÷µØ£¬¶øÇÒÊdz¬¸ßËÙ¡£
DockerÊÇ¿ªÔ´Èí¼þ£¬´úÂëÍйÜÔÚGitHubÉÏ£¬Ê¹ÓÃGoÓïÑÔ±àд¡£Go¿ÉÒԳƵÃÉÏÊÇ»¥ÁªÍøÊ±´úרÃÅΪ¿ª·¢·Ö²¼Ê½¡¢¸ß²¢·¢ÏµÍ³¶øÉúµÄ±à³ÌÓïÑÔ¡£DockerÒ²¿ÉÒÔ˵ÊÇGoÓïÑÔµÄÒ»¸öɱÊÖ¼¶Ó¦Ó㬶øÇÒÔÚDockerÉú̬ȦÀïºÜ¶àÈí¼þÒ²¶¼ÊÇʹÓÃGoÓïÑÔ±àдµÄ¡£
1.2. DockerÀúÊ·
DockerÏîĿʼÓÚ2013Äê3Ô£¬Óɵ±Ê±µÄPaaS·þÎñÌṩÉÌdotCloud¿ª·¢£¬dotCloundÒ²ÊÇYCombinator
S10µÄ±ÏÒµÉú¡£¾¡¹ÜDockerÏîÄ¿ºÜÄêÇᣬµ½ÏÖÔÚÒ²Ö»ÓÐ15¸öÔ¶øÒÑ£¬È»¶øËüµÄ·¢Õ¹ÊÆÍ·Èç´ËÖ®ÃÍÒѾÈúܶàÈ˸Ð̾²»ÒÑÁË¡£
2013Äê10ÔÂdotCloud¹«Ë¾Ãû×ÖÒ²ÓÉdotCloud, Inc.¸ÄΪDocker, Inc.£¬¼¯Öиü¶àµÄ¾«Á¦·Åµ½ÁËDockerÏà¹ØµÄÑз¢ÉÏ¡£
1.3. DockerµÄ¼¼Êõ»ùʯ
ÔÚ½øÈëDockerµÄÊÀ½ç֮ǰ£¬ÎÒÃÇÏÈÀ´¿´Ò»ÏÂDockerʵÏÖËùÒÀÀµµÄһЩ¼¼Êõ¡£
ʵ¼ÊÉÏDockerµÄ³öÏÖÀë²»¿ªºÜ¶àLinux kernelÌṩµÄ¹¦ÄÜ£¬ÉõÖÁ¿ÉÒÔ˵DockerÔÚ¼¼ÊõÉϲ¢Ã»ÓÐÊ²Ã´ÌØ±ðÖØ´óµÄ´´ÐÂÖ®´¦£¬ÀûÓõͼÊÇÒѾ·Ç³£³ÉÊìµÄLinux¼¼Êõ¶øÒÑ£¬ÕâЩ¼¼ÊõÔçÔÚ
Solaris 10»òLinux Kernel 2.6µÄʱºò¾ÍÓÐÁË¡£¿ÉÒÔºÁ²»¿äÕŵÄ˵Docker¾ÍÊÇ¡°Õ¾ÔÚÁ˾ÞÈ˵ļç°òÉÏ¡±¡£
ÏÂÃæÎÒÃǾÍÏÈÀ´Á˽âÒ»ÏÂDockerÖ÷ÒªÀûÓõÄLinux¼¼Êõ¡£
1.3.1. ÈÝÆ÷¼¼Êõ
ÈÝÆ÷£¨Container£©ÓÐʱºòÒ²±»³ÆÎª²Ù×÷ϵͳ¼¶ÐéÄ⻯£¬ÒÔÇø±ð´«Í³µÄHypervisorÐéÄâ¼¼Êõ¡£Ëü²»¶ÔÓ²¼þ½øÐÐÄ£Ä⣬ֻÊÇ×÷ΪÆÕͨ½ø³ÌÔËÐÐÓÚËÞÖ÷»úµÄÄÚºËÖ®ÉÏ¡£
ÔÚÈÝÆ÷ÖÐÔËÐеÄÒ»°ã¶¼ÊÇÒ»¸ö¼òÒ×°æµÄLinuxϵͳ£¬ÓÐrootÓû§È¨ÏÞ¡¢initϵͳ£¨²ÉÓÃLXCÈÝÆ÷µÄÇé¿öÏ£©¡¢½ø³Ìid¡¢Óû§idÒÔ¼°ÍøÂçÊôÐÔ¡£
ÈÝÆ÷¼¼ÊõÔÚÔÆ¼ÆËãʱ´úÒѾ±»´óÁ¿Ê¹Óá£Google¹«Ë¾µÄJoe BedaÔÚ½ñÄê5ÔÂ×öÁËÒ»´ÎÌâΪ¡¶Containers
At Scale ¡ª At Google, the Google Cloud Platform and
Beyond¡·×¢ 1µÄÑݽ²£¬ÔÚÆäÖÐÌáµ½¡°Everything at Google runs in a container¡±£¬Ã¿ÖÜÆô¶¯ÈÝÆ÷´ÎÊý¾¹È»¶à´ï20ÒڴΡ£
×¢ 1 https://speakerdeck.com/jbeda/containers-at-scale
ºÜ¶àPaaSƽ̨¶¼ÊÇ»ùÓÚÈÝÆ÷¼¼ÊõʵÏֵ쬱ÈÈçĿǰ×î³É¹¦µÄPaaSƽ̨Heroku¡£´ËÍ⣬»¹ÓбȽÏÖøÃûµÄ¿ªÔ´PaaSƽ̨Cloud
FoundryµÄWardenÒÔ¼°GoogleµÄLmctfy£¨Let Me Contain That For
You£©×¢ 2µÈ¡£
×¢ 2 Let Me Contain That For You£¬http://github.com/google/lmctfy
1.3.2. LXC
ÕâÒ²ÊÇÔÚLinuxÏÂʹÓñȽϹ㷺µÄÈÝÆ÷·½°¸¡£»ù±¾ÉÏÎÒÃÇ¿ÉÒÔÈÏΪLinux containers = cgroups£¨×ÊÔ´¿ØÖÆ£©
+ namespaces£¨ÈÝÆ÷¸ôÀ룩¡£
LXCºÜ³ÉÊìºÜÇ¿´ó£¬È»¶øËüÈ´²»ºÃʹÓ㬱ÈÈçËü²»·½±ãÔÚ¶ą̀»úÆ÷¼äÒÆ¶¯£¬²»·½±ã´´½¨¹ÜÀí£¬²»¿ÉÖØ¸´²Ù×÷£¬Ò²²»·½±ã¹²ÏíµÈµÈ£¬Ïà¶ÔÓÚ¿ª·¢ÈËÔ±À´Ëµ£¬ËüÖ»ÊÇϵͳ¹ÜÀíÔ±µÄÍæ¾ß¡£DockerµÄ³öÏֺܺõĽâ¾öÁËÕâЩÎÊÌ⣬Ëü½«ÈÝÆ÷¼¼ÊõµÄʹÓóɱ¾ÀµÍµ½ÁËÒ»¸öƽÃñ¼Û¸ñ¡£
1.3.3. namespaces
ÕâÊÇÓÃÀ´ÎªÈÝÆ÷Ìṩ½ø³Ì¸ôÀëµÄ¼¼Êõ£¬Ã¿¸öÈÝÆ÷¶¼ÓÐ×Ô¼ºµÄÃüÃû¿Õ¼ä£¬±ÈÈçpid/net/ipc/mnt/utsµÈÃüÃû¿Õ¼ä£¬ÒÔ¼°ÎªÈÝÆ÷Ìṩ²»Í¬µÄhostname¡£namespaceÄܱ£Ö¤²»Í¬µÄÈÝÆ÷Ö®¼ä²»»áÏ໥ӰÏ죬ÿ¸öÈÝÆ÷¶¼ÏñÊÇÒ»¸ö¶ÀÁ¢ÔËÐÐ×ŵÄOSÒ»Ñù¡£
1.3.4. cgroups
cgroupsÊÇÒ»¸öGoogle¹±Ï×µÄÏîÄ¿£¬ËüÖ÷ÒªÓÃÀ´¶Ô¹²Ïí×ÊÔ´µÄ·ÖÅä¡¢ÏÞÖÆ¡¢É󼯼°¹ÜÀí£¬±ÈÈçËü¿ÉÒÔΪÿ¸öÈÝÆ÷·ÖÅäCPU¡¢ÄÚ´æÒÔ¼°blkioµÈµÄʹÓÃÏÞ¶îµÈ¡£cgroupsʹµÃÈÝÆ÷ÄÜÔÚËÞÖ÷»úÉÏÄÜÓѺõÄÏà´¦£¬²¢¹«Æ½µÄ·ÖÅä×ÊÔ´ÒÔ¼°¶Å¾ø×ÊÔ´ÀÄÓõÄDZÔÚ·çÏÕ¡£
ÈÝÆ÷¼¼ÊõʵÏÖ·½°¸¿ÉÒÔÓÃÏÂÃæµÄͼ½øÐмòµ¥ËµÃ÷¡£

ͼ1 DockerÈçºÎºÍLinuxÄں˴ò½»µÀ
ÉÏͼÖеÄcgroups¡¢namespacesºÍapparmorµÈ¶¼ÊÇLinuxÄÚºËÌṩµÄ¹¦ÄÜ¡£²»¹ÜÊÇ´«Í³µÄLXC»¹ÊÇDockerµÄlibcontainer£¬¶¼Ê¹ÓÃÁËKernelµÄÕâЩ¹¦ÄÜÀ´ÊµÏÖÈÝÆ÷¹¦ÄÜ¡£
1.3.5. ÁªºÏÎļþϵͳ
ÁªºÏÎļþϵͳÊÇÒ»¸ö·Ö²ãµÄÇáÁ¿¡¢¸ßÐÔÄÜÎļþϵͳ¡£DockerÖ®ËùÒÔÕâôÎüÒýÈË£¬ºÜ´ó³Ì¶ÈÉÏÔÚÓÚÆäÔÚ¾µÏñ¹ÜÀíÉÏËù×ö³öµÄ´´Ð¡£¶øÁªºÏÎļþϵͳÕýÊǹ¹½¨Docker¾µÏñµÄ»ù´¡¡£
AUFS£¨AnotherUnionFS£©ÊÇÒ»¸ö·Ö²ãµÄ»ùÓÚCopy On Write¼¼ÊõµÄÎļþϵͳ£¬Ö§³ÖUnion
Mount£¬¾ÍÊǽ«¾ßÓв»Í¬Îļþ¼Ð½á¹¹µÄ¾µÏñ²ã½øÐеþ¼Ó¹ÒÔØ£¬ÈÃËüÃÇ¿´ÉÏÈ¥¾ÍÏñÊÇÒ»¸öÎļþϵͳÄÇÑù¡£
1.4. ÈÝÆ÷¼¼ÊõVSÐéÄâ»ú¼¼Êõ
ÈÝÆ÷¼¼ÊõºÍHypervisor¼¼ÊõËäÈ»²»ÊôÓÚͬһ²ã´ÎµÄ¸ÅÄµ«ÊÇ×÷Ϊ¾ßÓмÆËãÄÜÁ¦µÄÓ¦ÓÃÔËÐÐÔØÌåÀ´Ëµ£¬ËüÃÇ»¹ÊÇÓÐÒ»¶¨µÄ¹²Í¨ÐԺ;ºÕù¹ØÏµ£¬ÕâÀï×÷´Ë¶Ô±ÈÍêÈ«ÊÇΪÁ˼ÓÉî¶ÁÕß¶ÔÈÝÆ÷¼¼ÊõµÄÀí½â¶øÒÑ¡£

±ÈÈ翪ԴPaaSʵÏÖÈí¼þtsuru×î³õʹÓõÄÊÇ»ùÓÚÐéÄâ»úµÄ¼¼Êõ£¬´´½¨Ò»¸öÓ¦ÓóÌÐòÐèÒª5·ÖÖÓ×óÓÒµÄʱ¼ä£¬¶øÔÚ²ÉÓÃDockerÖ®ºó£¬ÒѾ½«Õâ¸öʱ¼äËõ¶Ìµ½ÁË10ÃëÖÓÁË×¢
3¡£
×¢ 3 tsuru and docker by Andrews Medina https://speakerdeck.com/andrewsmedina/tsuru-and-docker
1.5. ÎÒÃÇÄÜÓÃDocker¸Éʲô£¿
Docker¿ÉÒÔÓ¦ÓÃÔÚ¸÷ÖÖ³¡¾°Ï£¬±ÈÈ繫˾ÄÚ²¿¿ª·¢²âÊÔʹÓ㬻òÕß×÷Ϊ¹²ÓлòÕß˽ÓÐPaaSƽ̨µÈ¡£
ÏÖÔÚPaaSƽ̨µÄ·¢Õ¹ÒѾ·Ç³£³ÉÊìÁË£¬ÕâÀïÎÒÃÇÖ»ÂÞÁÐһЩÔÚ¿ª·¢ÖÐʹÓÃDocker¼¼Êõ¿ÉÄÜ»á¸øÎÒÃÇ´øÀ´µÄÒæ´¦¡£
1.5.1 ÔÚ¿ª·¢ÖÐ
¹¹½¨¿ª·¢»·¾³±äµÃ¼òµ¥
¼òµ¥°üÀ¨¼¸¸ö·½ÃæµÄÒâ˼
1.¿ìËÙ£ºÖ»Ðèdocker run¼´¿É
2.¹²Ïí£ºÍ¨¹ýDockerfile»òÕßRegistry
3.×Ô¶¯»¯£ºÒ»ÇдúÂ뻯µÄ¶«Î÷¶¼¿ÉÒÔ×Ô¶¯»¯
4.ͳһ£ºÃ¿¸öÈ˵Ŀª·¢»·¾³¶¼ÊÇһģһÑùµÄ
ÉèÏëÎÒÃÇÒª»ùÓÚNginx/PHP¡¢MySQLºÍRedis¿ª·¢£¬ÎÒÃÇ¿ÉÒÔ´´½¨3¸öDocker¾µÏñ±£´æµ½¹«Ë¾Ë½ÓеÄRegistryÖÐÈ¥£¬Ã¿¸ö¿ª·¢ÈËԱʹÓõÄʱºòÊÇÐèÒªÖ´ÐÐdocker
run redis¼´¿ÉÒÔÏíÓÃ×Ô¼º¶ÀÓеÄRedis·þÎñÁË£¬¶øÇÒÕâ3¸öÈÝÆ÷²»¹Ü´ÓÕ¼ÓôÅÅ̿ռ仹ÊÇÔËÐÐÐÔÄÜÀ´Ëµ£¬¶¼±ÈÐéÄâ»úÒªºÃºÜ¶à¡£
1.5.2. ÔÚ²âÊÔÖÐ
½â¾ö»·¾³¹¹½¨ÎÊÌâ
ÓÐʱºò¹¹½¨²âÊԵĻ·¾³ÊÇÒ»Ïî·Ñʱ·ÑÁ¦µÄ¹¤×÷£¬¶øDockerÄÜÈÃÕâ±äµÃÇáËÉ¡£Èç¹ûÄãµÄ²âÊԱȽϼòµ¥µÄ»°£¬ÉõÖÁÖ±½ÓÄÿª·¢¹¹½¨µÄ¾µÏñ¾Í¿ÉÒÔ¿ªÊ¼ÁË¡£
Ïû³ý»·¾³²»Ò»Öµ¼ÖµÄÎÊÌâ
¡°ÔÚÎҵĻúÆ÷ÉÏÔËÐеĺúõģ¬Ôõôµ½ÄãÄÇÀï¾Í²»ÐÐÁË£¿¡±£¬ÎÒÏ볬¹ý°ëÊýµÄ³ÌÐòÔ±¶¼Ôø¾Ëµ¹ýÀàËÆµÄ»°¡£Èç¹û¶Ôµ¼ÖÂÕâÒ»ÎÊÌâµÄÔÒò½øÐÐͳ¼ÆµÄ»°£¬ÎÒÏëÅÅÔÚµÚһλµÄÓ¦¸Ã·Ç¡°»·¾³²»Ò»Ö¡±ÄªÊôÁË£¬Õâ°üÀ¨²Ù×÷ϵͳºÍÈí¼þµÄ°æ±¾¡¢»·¾³±äÁ¿¡¢Îļþ·¾¶µÈ¡£
ʹÓÃDockerµÄ»°ÄãÔÙÒ²²»ÓÃΪ´Ë·³ÄÕÁË¡£ÒòΪÄã½»¸¶µÄ¶«Î÷²»¹âÊÇÄãµÄ´úÂë¡¢ÅäÖÃÎļþ¡¢Êý¾Ý¿â¶¨Ò壬»¹°üÀ¨ÄãµÄÓ¦ÓóÌÐòÔËÐеĻ·¾³£ºOS¼ÓÉϸ÷ÖÖÖмä¼þ¡¢Àà¿â
+ ÄãµÄÓ¦ÓóÌÐò¡£
1.5.3. ²¿ÊðºÍÔËά
»ùÓÚÈÝÆ÷µÄ²¿ÊðºÍ×Ô¶¯»¯
Docker¶¨ÒåÁËÖØÐ´ò°ü³ÌÐòµÄ·½·¨¡£
DockerÈÝÆ÷ + Óû§Ó¦Óà = ²¿Êðµ¥Î»£¨¹¹¼þ£©
Docker¿ÉÒÔ¿´×÷ÊÇÓôúÂë±àд³öÀ´µÄ¹ú¼Ê¼¯×°Ï䣬Ëü¿ÉÒÔ°ÑÈκÎÓ¦Óü°Ïà¹ØÒÀÀµÏî´ò°ü³ÉÒ»¸öÇáÁ¿¡¢¿ÉÒÆÖ²£¨Portable£©¡¢×Ô°üºµÄÈÝÆ÷¡£
ÒÔǰ²¿Êð´úÂë¶¼ÊÇ´úÂë¼¶±ðµÄ£¬ÓÐÁËDocker£¬Ôò¿ÉÒÔ½øÐÐÈÝÆ÷¼¶±ðµÄ²¿Êð¡£ÕâÑù´øÀ´µÄ×î´óµÄºÃ´¦¾ÍÊÇ¿ª·¢Õß±¾µØ²âÊÔ¡¢CI·þÎñÆ÷²âÊÔ¡¢²âÊÔÈËÔ±²âÊÔ£¬ÒÔ¼°Éú²ú»·¾³ÔËÐеͼ¿ÉÒÔÊÇͬһ¸öDocker¾µÏñ¡£
¿ìËÙ½øÐкáÏòÀ©Õ¹
DockerÈÝÆ÷µÄÆô¶¯ËٶȺܿ죬¿ÉÒÔ˲¼äÆô¶¯´óÁ¿ÈÝÆ÷£¬ËùÒÔÔڷdz£ÊʺÏÔÚÒµÎñ¸ß·åÆÚ½øÐкáÏòÀ©Õ¹¡£Õâ±È´«Í³µÄÆô¶¯EC2ʵÀý»òÕßÎïÀí»ú¿ÉÒª¿ì¶àÁË¡£
ÌìÉúµÄºÍÔÆ¼ÆËã¼¼ÊõÏà½áºÏ
µ±È»£¬ÓÉÓÚDocker¾ßÓкܺõÄÒÆÖ²ÐÔ£¬ËùÒÔËü¸üÇ¿´óµÄµØ·½»¹ÔÚÓÚºÍÔÆ»·¾³½áºÏʹÓá£
DockerÈÝÆ÷ÊÇ¿ÉÒÆÖ²£¬»òÕß˵¿çƽ̨¡£½«À´µÄÓ¦Óò¿Êð¿ÉÄÜÊÇÔÚ±¾µØ½øÐдò°ü£¨³ÉDocker¾µÏñ£©È»ºó´«Ë͵½ÔƶËÔËÐУ¬ÖÁÓÚÊÇAWS»¹ÊÇGCE
Õâ²»ÊÇÎÊÌ⣬Docker¶¼ÄÜÔÚÆäÉÏÔËÐС£ÕâÑù²»½öÄÜÔÚÒ»¶¨³Ì¶ÈÉϽâ¾övendor-lockinµÄÎÊÌ⣬ͬʱҲʹµÃÔÚ²»Í¬µÄÔÆ·þÎñÌṩÉÌÖ®¼äÇ¨ÒÆÒ²±äµÃ
¼òµ¥¡£ÓÈÆäÊÇδÀ´ÔÚʹÓöàÔÆ£¨multi-cloud£©»·¾³µÄʱºò£¬Õ⽫·Ç³£±ãÀû¡£
±ÊÕßÈÏΪ»ùÓÚIaaS + ÈÝÆ÷¼¼ÊõµÄÓ¦Óý»¸¶¡¢²¿Êð·½Ê½½«À´Ò»¶¨»á³ÉΪһÖÖÁ÷Ðеķ½Ê½¡£
½øÐÐBlue-green²¿Êð
¡¸Blue-green deployment¡¹Õâ¸ö´Ê×î³õ³öÏÖÔÚ¡¶Continuous Delivery:
Reliable Software Releases through Build, Test, and
Deployment Automation ¡·Ò»Ê飬ºó¾ThoughtWorksµÄMartin Fowler·¢Ñï¹â´ó×¢
4¡£
×¢ 4 http://martinfowler.com/bliki/BlueGreenDeployment.html

Blue-green deployment·½·¨ÆäʵºÜ¼òµ¥£¬¾ÍÊDZ£³ÖÁ½Ì×Ò»ÑùµÄÉú²ú»·¾³£¬¶øÊµ¼ÊÉÏÖ»ÓÐÒ»Ì×»·¾³ÕæÕýµÄ¶ÔÍâÌṩ·þÎñ£¨Í¼ÖÐÂÌÉ«»·¾³£©£¬¶øÁíÒ»Ì×»·¾³Ôò´¦ÓÚ´ý»ú×´
̬£¨Í¼ÖÐÀ¶É«£©¡£²¿ÊðµÄʱºò£¬ÎÒÃÇ»áÏÈÉÏÏßµ½À¶É«»·¾³ÖУ¬Èç¹û²âÊÔûÓÐÎÊÌâÁË£¬ÔÙ½«Â·ÓÉÇл»µ½ÐµķþÎñÉÏ¡£
Blue-green²¿ÊðÄÜ´øÀ´ÈçϺô¦¡£
1.×îС»¯Í£»úʱ¼ä
2.¿ìËٻعö
3.hot standby
¶øÎ´À´µÄ¿ª·¢ºÍ²¿ÊðºÍ¿ÉÄܾͻáÏñÏÂÃæÕâÑù½øÐÐÁË¡£
1.¢Ù ¿ª·¢ÈËÔ±½«´úÂëpushµ½Git²Ö¿â
2.¢Ú CI¹¤¾ßͨ¹ýwebhookµÃµ½×îдúÂ룬¹¹½¨Docker¾µÏñ²¢Æô¶¯ÈÝÆ÷½øÐвâÊÔ¡£
3.¢Û ²âÊÔͨ¹ýºó½«¾µÏñ´ò±êÇ©ºópushµ½Ë½ÓоµÏñRegistry
4.¢Ü CI¹¤¾ß֪ͨCD¹¤¾ß
5.¢Ý CD¹¤¾ßͨ¹ýMesos/MarathonµÈ½øÐлùÓÚÈÝÆ÷µÄ²¿Êð
6.¢Þ ²âÊÔûÓÐÎÊÌâºó½øÐÐÈÝÆ÷µÄÇл»£¨¼´Blue-greenÇл»£©
|