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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
DockOne¼¼Êõ×ܽáÕûÀí£¨ËÄ£©
 
×÷ÕߣºCMGS À´Ô´£ºDockOne.io ·¢²¼ÓÚ 2015-8-25
  2765  次浏览      27
 

DockOne¼¼Êõ·ÖÏí£¨Ê®Ò»£©£ºDockerCon ¼ûÎÅ

±¾´ÎÖ÷Òª·ÖÏíDockerConÉϵļûÎÅ£¬·ÖÏíËùÓÐÄÚÈÝ´óÖ¿ÉÒÔ·ÖΪÈý¸ö²¿·Ö£º1. Docker 1.7.0Éî¶È½âÎö£»2.DockerCon Hackathon¼ûÎÅ£»3. DockerConÊ¢µä¡£

µÚÒ»»·½Ú£ºDocker 1.7.0Éî¶È½âÎö

´ÓDockerµÄ°æ±¾±ä¸üÈÕÖ¾À´¿´£¬Docker 1.7.0ÔÚËĸö·½Ãæ»áÓлò¶à»òÉٵı䶯£¬·Ö±ðÊÇ£ºDockerÔËÐÐʱ£¨Runtime£©£¬DockerµÄ´úÂë±ä»¯£¬DockerµÄbuilderÄ£¿é£¬ÒÔ¼°DockerµÄbugÐÞ¸´¡£

´Ë´Î·ÖÏíÖ÷񻃾¼°Docker 1.7.0µÄruntime¡£

1.1.ÔöÌíÁËÒ»¸öÈÔÈ»´¦ÓÚÊÔÑé½×¶ÎµÄÌØÐÔ£ºÖ§³Öout of processµÄÊý¾Ý¾í²å¼þ

ºÎΪÊÔÑéÐÔÖʵÄÌØÐÔ£¬»»ÑÔÖ®DockerµÄÕⲿ·ÖÌØÐÔ»¹²»Ö§³ÖÔÚÉú²ú»·¾³ÖвÉÓã¬ÕâÐ©ÌØÐÔ¸ü¶àµÄÏ£ÍûÓû§½ö½öÔÚ²âÊÔ»·¾³£¬ÒÔ¼°É³Ïä»·¾³ÖвÉÓá£ÊÔÑéÐÔÌØÐÔÍêÈ«ÊÇDocker 1.7.0µÄÒ»´óÁÁµã¡£

ÔÚÒÔÉϵĻù´¡ÉÏÀí½âout-of-process£¬¾ÍÈÝÒ׺ܶ࣬²å¼þ±¾ÉíÓëDocker DaemonÎÞñîºÏ£¬¼´²å¼´Óã¬ÔÚDocker Daemon·¶³ëÖ®Íâ·¢»Ó×÷Óá£

ĿǰDockerµÄÊÔÑéÐÔÌØÐÔ¿ÉÒÔ´ÓÁ½¸ö·½ÃæÀ´ÃèÊö£¬Ê×ÏÈDockerĿǰÒѾ­Ö§³ÖÓû§×Ô¶¨ÒåµÚÈý·½²å¼þµÄʹÓã»ÁíÍâÔÚÕâ»ù´¡ÉÏ£¬Docker×ÔÉíÖ§³ÖÁËÈÝÆ÷Êý¾Ý¾ívolume²å¼þ¡£´ËÍ⣬Docker»¹¶¨ÒåÁËÒ»ÕûÌ×Óë²å¼þÏà¹ØµÄAPI£¬·½±ãÓû§Ê¹Óᣵ±È»£¬ÏàÐźóÐøÔÚ¸ÃÁìÓò£¬²»ÂÛÊÇDocker¹Ù·½£¬»¹ÊÇÕû¸öÉçÇø£¬¶¼»á²»¶ÏÓÐеIJå¼þµ®Éú¡£ÖµµÃÒ»ÌáµÄ£¬ÔÚÊý¾Ý¾ívolume²å¼þ·½Ã棬³öÏÖÁËFlockerµÄÉíÓ°£¬ÕâÒ²Òâζ×ÅÈÝÆ÷µÄÊý¾Ý´æ´¢ÎÊÌâ£¬ÕæÕý±»ÌáÉÏÌ¨Ãæ£¬²¢ÓÐÏàÓ¦ºÏÀíµÄ½â¾ö·½°¸¡£

1.2.´Ódocker daemonµÄ½Ç¶È£¬Ìí¼ÓÁËuserland-proxyµÄÆðÍ£¿ª¹Ø

Ê×ÏȽéÉÜuserland-proxyÒ»Ö±ÒÔÀ´µÄ×÷Óá£ÖÚËùÖÜÖª£¬ÔÚDockerµÄÇŽÓbridgeÍøÂçģʽÏ£¬DockerÈÝÆ÷ʱÊÇͨ¹ýËÞÖ÷»úÉϵÄNATģʽ£¬½¨Á¢ÓëËÞÖ÷»úÖ®ÍâÊÀ½çµÄͨÐÅ¡£È»¶øÔÚËÞÖ÷»úÉÏ£¬Ò»°ãÇé¿öÏ£¬½ø³Ì¿ÉÒÔͨ¹ýÈýÖÖ·½Ê½·ÃÎÊÈÝÆ÷£¬·Ö±ðΪ£º<eth0IP>:<hostPort>, <containerIP>:<containerPort>,ÒÔ¼°<0.0.0.0>:<hostPort>¡£Êµ¼ÊÉÏ£¬×îºóÒ»ÖÖ·½Ê½µÄ³É¹¦·ÃÎÊÍêÈ«µÃÒæÓÚuserland-proxy£¬¼´Docker DaemonÔÚÆô¶¯Ò»¸öDockerÈÝÆ÷ʱ£¬Ã¿ÎªÈÝÆ÷ÔÚËÞÖ÷»úÉÏÓ³ÉäÒ»¸ö¶Ë¿Ú£¬¶¼»áÆô¶¯Ò»¸ödocker-proxy½ø³Ì£¬ÊµÏÖËÞÖ÷»úÉÏ0.0.0.0µØÖ·É϶ÔÈÝÆ÷µÄ·ÃÎÊ´úÀí¡£

µ±Ê±ÒýÈëuserland-proxyʱ£¬Ò²ÐíÊÇÒòΪÉè¼ÆÕßÒâʶµ½ÁË0.0.0.0µØÖ·ÒÔ¼°localhost¶ÔÈÝÆ÷·ÃÎÊÉϵŦÄÜȱÏÝ¡£È»¶ø£¬ÔÚdocker-proxy¼ÓÈëDockerÖ®ºóÏ൱³¤µÄÒ»¶Îʱ¼äÄÚ¡£Docker°®ºÃÕ߯ձé¸ÐÊܵ½£¬ºÜ¶à³¡¾°Ï£¬docker-proxy²¢·Ç±ØÐ裬ÉõÖÁ»á´øÀ´Ò»Ð©ÆäËûµÄ±×¶Ë¡£

Ó°Ïì½Ï´óµÄ³¡¾°Ö÷ÒªÓÐÁ½ÖÖ¡£

µÚÒ»£¬µ¥¸öÈÝÆ÷ÐèÒªºÍËÞÖ÷»úÓжà¸ö¶Ë¿ÚµÄÓ³Éä¡£´Ë³¡¾°Ï£¬ÈôÈÝÆ÷ÐèÒªÓ³Éä1000¸ö¶Ë¿ÚÉõÖÁ¸ü¶à£¬ÄÇôËÞÖ÷»úÉϾͻᴴ½¨1000¸öÉõÖÁ¸ü¶àµÄdocker-proxy½ø³Ì¡£¾Ý²»ÍêÈ«²âÊÔ£¬Ã¿Ò»¸ödocker-proxyÕ¼ÓõÄÄÚ´æÊÇ4-10MB²»µÈ¡£Èç´ËÒ»À´£¬Ö±½ÓÏûºÄÖÁÉÙ4-10GBÄڴ棬ÒÔ¼°ÖÁÉÙ1000¸ö½ø³Ì£¬ÎÞÂÛÊÇ´ÓϵͳÄڴ棬»¹ÊÇ´ÓϵͳCPU×ÊÔ´À´·ÖÎö£¬Õâ¶¼»áÊǺܴóµÄ¸ºµ£¡£

µÚ¶þ£¬ÖÚ¶àÈÝÆ÷ͬʱ´æÔÚÓÚËÞÖ÷»úµÄÇé¿ö£¬µ¥¸öÈÝÆ÷Ó³Éä¶Ë¿Ú¼«ÉÙ¡£ÕâÖÖ³¡¾°Ï£¬¹ØÓÚËÞÖ÷»ú×ÊÔ´µÄÏûºÄ²¢Ã»ÓÐÈçµÚÒ»ÖÖ³¡¾°ÏÂÄÇÑù±©Á¦£¬¶øÇÒÒ»ÖÖ½ÏΪÂýÐԵķ½Ê½ÇÖÊÉ×ÊÔ´¡£

Èç½ñ£¬Docker DaemonÒýÈë- -userland-proxyÕâ¸öflag£¬½«ÒÔÉϳ¡¾°µÄ¿ØÖÆÈ¨ÍêÈ«½»¸øÁËÓû§£¬ÓÉÓû§¾ö¶¨ÊÇ·ñ¿ªÆô£¬Ò²ÎªÓû§µÄ³¡¾°µÄproxy´úÀíÌṩÁËÁé»îÐÔ¡£

1.3. docker execÃüÁîÔö¼Ó- -user²ÎÊý£¬Óû§¿ØÖÆdocker execÔÚÈÝÆ÷ÖÐÖ´ÐÐÃüÁîʱËù´¦µÄÓû§

×Ô´Ódocker 1.3.0ÒýÈëdocker execÖ®ºó£¬Óû§¶ÔÈÝÆ÷µÄ²Ù×ÝÄÜÁ¦±»´ó´óÊÍ·Å£¬ÈÝÆ÷¶ÔÓû§¶øÑÔ²»ÔÙÊÇÒ»¸öÔËÐеĺںС£È»¶ø£¬docker exec´øÀ´¾Þ´óºÃ´¦µÄͬʱ£¬ÎÒÃÇÒ²ÄÜ¿´µ½ÕâÆäÖеÄһЩ覴㬵±È»DockerÉçÇøÒ²ÔÚ²»¶ÏµØÍêÉÆdocker exec¡£

Ê×ÏÈ£¬docker execÔÚÈÝÆ÷ÖÐÔËÐеĽø³Ì»áÒÔrootȨÏÞÔËÐУ¬ÔÚȨÏÞ·½ÃæÈ±·¦Áé»îÐÔµÄͬʱ£¬ÈÝÆ÷µÄ°²È«ºÜÓпÉÄÜʧ¿Ø¡£²ÎÊý- -userÇ¡ºÃÃÖ²¹ÁËÕâ·½ÃæµÄ²»×ã¡£Æä´Î£¬docker execµÄ´æÔÚ´òÆÆÁËÈÝÆ÷ÄÚ½ø³Ì³ÊÏÖÊ÷×´¹ØÏµµÄÏÖ×´£¬¶øÉè¼Æ³õÆÚDockerÈÝÆ÷µÄºÜ¶à¸ÅÄî¾ùÒÔÊ÷µÄ˼Ïë´Óinit processÈëÊÖ£¬Òò´ËĿǰdocker execµÄ½ø³Ì²¢²»ÄܺÍÔ­Éú̬ÈÝÆ÷½ø³ÌÍêȫһÑùµØ±»Docker Daemon¹ÜÀí¡£

1.4. ÔöÇ¿DockerÈÝÆ÷Íø¹ØµØÖ·µÄÅäÖùã¶È

Docker 1.7.0·¢²¼Ö®Ç°£¬ÔÚbridgeÇŽÓģʽÏ£¬DockerÈÝÆ÷µÄÍø¹ØµØÖ·ÊÇĬÈÏÉú³ÉµÄ£¬Ò»°ãΪDocker»·¾³ÖеÄdocker0ÍøÇŵØÖ·¡£´ÓÈÝÆ÷ͨÐŵĽǶȶøÑÔ£¬Ä¬Èϵķ½Ê½ÒѾ­¿ÉÒÔÂú×ãÐèÒª¡£µ«ÊÇ£¬ÎÒÃÇÒÀÈ»¿ÉÒÔ·¢ÏÖ£¬ÕâÖÖģʽ´æÔÚһЩ±×¶Ë£¬±ÈÈçÍøÂçÅäÖõÄÁé»îÐÔÒÔ¼°ÍøÂ簲ȫÐÔ¡£

DockerÈÝÆ÷µÄÍøÂçÒ»Ö±¹ãÊܹØ×¢£¬È±·¦¿ÉÅäÖõÄÌØÐÔ£¬ÔÚÈç½ñµÄÈí¼þ·¢Õ¹ÖУ¬¼¸ºõ¾ÍÒâζ×Å·â±Õ¡£ ¨Cdefault-gateway ÒÔ¼°¨Cdefault-gateway-v6 ÕâÁ½¸ö²ÎÊý£¬ºÜ´ó³Ì¶ÈÉÏÌá¸ßÁËÓû§×Ô¶¨ÒåÈÝÆ÷ÍøÂçµÄÁé»îÐÔ£¬Óû§¸ü¶à³¡¾°µÄ¸²¸Ç£¬Ëƺõ´ÓDockerµÄ·¢Õ¹ÖÐÈôÓ°ÈôÏÖ¡£½áºÏ×î½ü¼¸´Îа汾£¬¹¦ÄܵÄÔöÇ¿Óë·á¸»£¬²»ÄѲ²⣬DockerµÄÆóÒµ»¯ÒÔ¼°Éú²ú»¯£¬ÒѾ­¸üÉÏÒ»²ãÂ¥¡£

ĬÈÏÍø¹ØµÄÉèÖã¬ÎªÊ²Ã´Ëµ»áºÍÈÝÆ÷µÄÍøÂ簲ȫÏà¹ØÄØ£¿¹ýÈ¥ºÜ³¤Ò»¶Îʱ¼äÄÚ£¬docker0×÷ΪÈÝÆ÷µÄÍø¹ØµØÖ·£¬ÕâÖÖ·½Ê½½«ÈÝÆ÷ÓëËÞÖ÷»úµÄñîºÏ¹ØÏµÌåÏֵĺܳ¹µ×¡£docker0×÷ΪËÞÖ÷»úÉϵÄÍøÂç½Ó¿Ú£¬³äµ±ÈÝÆ÷ÓëËÞÖ÷»úµÄÇÅÁº¡£È»¶ø£¬Ò²ÕýÊÇÇÅÁºµÄ´æÔÚ£¬Ê¹µÃÈÝÆ÷ÄÚ²¿½ø³ÌºÜÈÝÒ×´©¹ýÍø¹Ø£¬µ½´ïËÞÖ÷»ú£¬´Ë¹ý³Ì²¢·Ç¶ÔÓû§Í¸Ã÷¡£

1.5. ÈÝÆ÷CFS quotaµÄÖ§³Ö

ÍêÉÆDocker¶ÔÄÚºËcgoupsµÄÖ§³Ö£¬Ö¸µÄÊǶÔÓÚÒ»¸ö×éÄڵĽø³Ì×éÔÚÒ»¸öÖÜÆÚÄÚ±»ÄÚºËCFSµ÷¶ÈËã·¨µ÷¶ÈµÄʱ¼äÏ޶µ¥Î»ÎªÎ¢Ãë¡£¸ÃÅäÖÃÏîÔÚcgroupsÖÐÏàÓ¦µÄÎļþΪ/sys/fs/cgroup/cpu/cpu.cfs_quota_us¡£

1.6. ÈÝÆ÷´ÅÅÌIOÏÞÖÆµÄÖ§³Ö

ÖÚËùÖÜÖª£¬ÈÝÆ÷½«»áΪÓû§Ìṩһ¸ö¸ôÀëµÄÔËÐл·¾³£¬ÈÝÆ÷ÄÚ²¿µÄ½ø³Ì»òÕß½ø³Ì×éʹÓÃ×ÊԴʱ½«Êܵ½ÏÞÖÆ£¬ÕâÑùµÄ×ÊÔ´£¬°üÀ¨£ºÄÚ´æ×ÊÔ´£¨ÎïÀíÄÚ´æÒÔ¼°swap£©£¬CPU×ÊÔ´£¨CPUʱ¼äƬÒÔ¼°CPUºËµÈ£©£¬´ÅÅ̿ռä×ÊÔ´µÈ£¬ÒÔÉÏÕⲿ·ÖÄÚÈÝ»ò¶à»òÉÙ£¬DockerµÄа汾֮ǰ»ò¶à»òÉÙ¶¼¿ÉÒÔʵÏÖ£¬È»¶ø¸ôÀëά¶ÈÒÀ¾É²»¹»ÍêÃÀ£¬Õâ´ÎDockerÌí¼ÓÁË¡ªblkio-weight²ÎÊý£¬ÊµÏÖ¶ÔÈÝÆ÷´ÅÅÌIOÏÞÖÆµÄÖ§³Ö¡£¸ôÀë¸ü¼ÓÍ걸£¬Óû§Ò²²»ÔÙÐèÒªµ£ÐÄÈÝÆ÷¼ä´ÅÅÌIO×ÊÔ´µÄ¾ºÕù¡£

1.7. ZFSÖ§³Ö

Docker 1.7.0 ÕýʽÐû²¼Ö§³ÖZFSÎļþϵͳ¡£´Ë¾ÙÒ²Òâζ×ÅDockerÈÝÆ÷ÎļþϵͳµÄÖ§³Ö´ÓÔ­ÏȵÄ5ÖÖÔö¼Óµ½6ÖÖ¡£´Ëǰ£¬DockerÖ§³Öaufs£¬devmapper£¬btrfs£¬ovelayfs£¬vfs£¨ÓÃÓÚÖ§³Övolume£©£¬Èç½ñÌí¼Ó¶ÔZFSµÄÖ§³Ö¡£ZFSµÄÖ§³Ö£¬²»½ûÈÃÈËÁªÏëµ½ÓëDockerµÄÊý¾Ý¾ívolume²å¼þµÄFlocker¡£´í½ø´í³ö£¬Ëƺõ¹ØÏµ½ÏΪ΢Ãî¡£

ÖµµÃÒ»ÌáµÄÊÇ£¬³ýÁËÖ§³ÖZFSÖ®Í⣬±ÊÕß·¢ÏÖÔÚ¸ºÔðÈÝÆ÷ÎļþϵͳµÄgraphÄ£¿éÖУ¬Ìí¼ÓÁËdriver_windows.go,ËäÈ»ÄÚÈݼ«Æä¼òÒ×£¬²¢·ÇÍêȫʵÏÖ¶ÔwindowsµÄÈ«ÅÌÖ§³Ö£¬µ«ÊÇÖÁÉÙÈôó¼Ò¿´µ½DockerÖ§³ÖwindowsµÄ²½·¥ÔÚ²»¶ÏÂõ½ø¡£

1.8. docker logsµÄ¹¦ÄÜÀ©Õ¹

²é¿´ÈÝÆ÷ÈÕÖ¾£¬ÏàÐźܶàDocker°®ºÃÕß¶¼ÌåÑé¹ý£¬ÕâÒ²ÊÇÓû§²é¿´ÈÝÆ÷ÔËÐÐ״̬µÄÖØÒªÒÀ¾Ý¡£

¿ÉÒÔ¼òµ¥Á˽âDockerÈÝÆ÷ÈÕÖ¾µÄÔ­Àí£º¶ÔÓÚÿһ¸ö´´½¨µÄDockerÈÝÆ÷£¬Docker Daemon¾ù»áÔÚÄÚ²¿´´½¨Ò»¸ögoroutineÀ´¼àÌýÈÝÆ÷ÄÚ²¿½ø³ÌµÄ±ê×¼Êä³östdoutÒÔ¼°±ê×¼´íÎóstderr£¬²¢½«ÄÚÈÝ´«µÝÖÁÈÕÖ¾ÎļþÖС£Ã¿µ±Óû§·¢Í¨¹ýDocker Client·¢Æð²é¿´ÈÝÆ÷ÈÕÖ¾µÄÇëÇódocker logsÖ®ºó£¬Docker Daemon»á½«ÈÕÖ¾ÎļþµÄÄÚÈÝ´«µÝÖÁDocker ClientÏÔʾ¡£

docker logsµÄ·¢Õ¹£¬¼¸ºõ¿ÉÒÔ·ÖΪ4¸ö½×¶Î£ºDockerµ®Éú³õÆÚµÄÔ­Éú̬ÈÕÖ¾´òÓ¡£»ÔÊÐíÓû§followÈÝÆ÷µÄÈÕÖ¾£»¿ªÆôÈÝÆ÷ÈÕÖ¾µÄtail¹¦ÄÜ£¬ÒÔ¼°ÈÝÆ÷ÈÕÖ¾µÄsince¹¦ÄÜ£¬´òÓ¡´Óijһ¸öʱ¼ä´Á¿ªÊ¼Ö®ºóµÄÈÝÆ÷ÈÕÖ¾¡£

ËäÈ»ÈÝÆ÷ÈÕÖ¾µÄ¹¦ÄÜÔÚÖð½¥ÔöÇ¿£¬µ«ÊDz»¿É·ñÈϵÄÊÇ£¬ÈÝÆ÷ÈÕÖ¾ÊÇÈÝÆ÷±¾ÉíÓëDocker DaemonñîºÏ×î´óµÄÄ£¿éÖ®Ò»£¬¶øÕâÉæ¼°DockerÉè¼ÆÖ®³õµÄ¼Æ»®£¬¾ø·ÇÍêÃÀ£¬µ«µÄÈ·ÊǶÌʱ¼äÄÚ×îÒ×Óõķ½°¸¡£

1.9. ÈÝÆ÷ÓëËÞÖ÷»ú¹²ÏíUTSÃüÃû¿Õ¼äµÄÖ§³Ö

²»Í¬µÄ³¡¾°Ï£¬ÈÝÆ÷ÓëËÞÖ÷»ú¿ÉÒÔÍêÈ«¸ôÀ룬ÈÝÆ÷Ò²¿ÉÄÜÓëËÞÖ÷»ú´æÔÚ¹²ÏíÐÅÏ¢µÄÇé¿ö£¬DockerÍøÂçµÄhostģʽ¾ÍÊÇÒ»¸öºÜºÃµÄÀý×Ó£¬¸ÃģʽϵÄÈÝÆ÷¹²ÏíËÞÖ÷»úµÄÍøÂçÃüÃû¿Õ¼ä¡£

¹²ÏíUTSÃüÃû¿Õ¼äµÄÖ§³Ö£¬Òâζ×ÅÈÝÆ÷ÓëËÞÖ÷»úµÄ¹ØÏµÔ½À´Ô½Î¢Ãî¡£Ò²ÐíĿǰºÜ¶àDocker°®ºÃÕßÒѾ­Ï°¹ßÈÝÆ÷ÓëËÞÖ÷»úÍêÈ«¸ôÀëµÄÔËÐУ¬µ±È»Ò²»áÓÐһЩÓû§Ôø¾­±§Ô¹ÍêÈ«¸ôÀëµÄÔËÐл·¾³²¢²»ÄÜÆ½»¬µÄ½«´«Í³ÒÅÁôÒµÎñÈÝÆ÷»¯¡£ÄÇô£¬Ä¿Ç°DockerÔÚ¼æ¹ËÁ½ÕßµÄÇé¿öÏ£¬¸ü¶àµØÔÚÂú×ãºóÕßµÄÐèÇ󣬲»¾ÃµÄ½«À´£¬DockerÈÝÆ÷µÄÔËÓó¡¾°±Ø½«¸ü¼Ó·á¸»£¬ÕâÒ²ÊÇDocker×ßÏòÆóÒµ»¯ÒÔ¼°Éú²ú»¯±ØÐëÒªÌ˵Ä·¡£

×ÜÌå¶øÑÔ£¬Docker 1.7.0¸ø±ÊÕߵĸÐÊÜÊÇ£º¹¦ÄÜÉÏÖð½¥ÏòÆóÒµÐèÇó¿¿Â££¬ÔÚproduction-readyµÄ·Éϲ»¶ÏÓÅ»¯£¬ÁíÍâÔÚ°²È«·½ÃæÔÚ²»Éæ¼°Äں˻ù´¡ÉÏÒ²²»¶ÏÍêÉÆ¡£

¾ÍÔÚ·¢²¼1.7.0Ö®ºóû¼¸ÌìµÄDockerConÉÏ£¬DockerÐû²¼production-ready²¢ÑÏËà¿´´ý°²È«£¬Æäʵ´Ó1.7.0µÄ±ä¸üÀ´¿´£¬ÍêÈ«¿ÉÒÔ¸ÐÊܵ½ÕâÒ»µã¡£

ÁíÍ⣬ÐèÒªÌá¼°µÄÊÇ£ºÒÔÉϵÄ3¡¢5¡¢6Èýµã¾ùÊǹúÄÚ¹«Ë¾»ªÎªµÄ´óÁ¦Íƶ¯ÏÂÍê³ÉµÄ£¬×÷Ϊһ¸öDocker¿ª·¢Õߣ¬ÓÉÖԵĸÐл»ªÎªÒÔ¼°ÖÚ¶àµÄdocker committerµÄ¹±Ïס£

µÚ¶þ»·½Ú£ºDockerCon Hackathon

6ÔÂ7ºÅ8ºÅ£¬ÔÛÃÇÖйúµÄ¿ª·¢ÕßÔÚ±±¾©¾Ù°ìÁËÒ»´ÎGolang&Docker Hackathon£¬DockerConǰϦ¾É½ðɽҲ¾Ù°ìÁËÒ»´ÎDocker Hackathon¡£

Õâ´ÎºÚ¿ÍÂíÀ­Ëɵ®ÉúÁ˺ܶàÐÂÓ±µÄÏë·¨£¬¾¨Óã·ÛµÄGeek¾«Éñ·¢»ÓµÃÁÜÀ쾡Ö¡£ÓÉÓÚÄÚÈݹýÓڷḻ£¬ÎÒ½ö½ö¸ø´ó¼Ò½éÉÜÁ½¸öÎÒÓ¡Ïó·Ç³£Éî¿ÌµÄÏîÄ¿¡£

2.1.²ÎÈüÏîÄ¿£ºSwarm-SEC

ÕâÊÇÒ»¸öSwarm¼¯Èº°²È«ÆÀ¹À¹¤¾ß

ͨ¹ýSwarm¡¢Ô¤Ïȶ¨ÒåµÄ°²È«¹æ·¶À´É¨ÃèÕû¸ö¼¯Èº¡£ÆÀ¹ÀµÄ°²È«Î¬¶ÈÓÐÖ÷ÒªÓÐÈýµã£ºSwarmÖÐdocker daemonµÄ°²È«ÅäÖã¬Swarm¼¯ÈºÖÐDocker NodeµÄ¾ßÌ尲ȫ²ßÂÔʹÓÃÇé¿ö£¬Swarm¼¯ÈºµÄÔËÐÐʱ°²È«Çé¿ö¡£

ÕâÊÇswarm-secµÄÆô¶¯·½Ê½£º

docker run -it --net host --pid host --cap-add audit_control \
-v /var/lib:/var/lib \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib/systemd:/usr/lib/systemd \
-v /etc:/etc --label swarm-sec \
swarm-sec <token-id>

ÍøÂçÃüÃû¿Õ¼ä£¬PidÃüÃû¿Õ¼ä£¬¼¸ºõ½«ËùÓеÄDockerÐÅÏ¢¶¼¹ÒÔØµ½ÈÝÆ÷ÄÚ²¿ÁË£¬ÁíÍ⻹Ìí¼ÓÁËÒ»¸öCapabilityÄÜÁ¦audit_control£¬ÓÃÒÔ»ñÈ¡auditÊØ»¤½ø³ÌµÄÐÅÏ¢¡£

ÎÒÖ÷Òª½éÉÜÒ»ÏÂSwarm-sec¹Ø×¢ÁËSwarm DaemonÒÔ¼°Docker NodeÉÏDocker DaemonµÄÄÄЩ°²È«ÎÊÌâ¡£

Swarm Daemon

1.²é¿´SwarmÊÇ·ñÔËÐÐÔÚÈÝÆ÷Ö®ÖУ¬

2.²é¿´SwarmÊÇ·ñÊÇÒ»¸ö×îеÄÎȶ¨°æ±¾

3.²é¿´SwarmµÄÈÕÖ¾¼¶±ð£¬²»½¨ÒéʹÓÃdebugģʽ

4.ÑéÖ¤ÊÇ·ñÕ¼ÓÃDockerµÄĬÈ϶˿Ú

5.ÑéÖ¤Swarm DaemonÊÇ·ñÆôÓÃÁËTLS°²È«´«ÊäЭÒé

6.ÑéÖ¤ÈÝÆ÷µ÷¶ÈÇý¶¯ÊÇ·ñÊÇmesos£¬Ä¿Ç°mesosÇý¶¯ÈÔ´¦ÓÚÊÔÑé½×¶Î

7.²é¿´ÀàËÆÓÚSELinuxºÍAppArmorÊÇ·ñÆôÓÃ

¡­¡­

Docker Daemon

ÑéÖ¤Docker NodeµÄlabelÉèÖÃÊÇ·ñ¹æ·¶£¬ÑéÖ¤docker daemonµÄÅäÖÃÊÖ·ñ·ûºÏ°²È«£¬±ÈÈç²»½¨ÒéʹÓÃAUFSµÈ¡£

ÏîĿԴÂ룺https://github.com/snrism/swarm-sec

2.2.²ÎÈüÏîÄ¿£ºSherdock RancherOSµÄ×÷Æ·

Ö÷ÒªµÄÌØÕ÷ÓУº

»ùÓÚÕýÔò±í´ïʽ£¬¶ÔDocker¾µÏñ½øÐÐ×Ô¶¯»ØÊÕ¡£

¾µÏñGCµÄµÄÔ­ÒòÖ÷Òª»¹ÊÇÒòΪÔÚbuildʧ°ÜµÄʱºò»á²úÉúһϵÁеÄnone¾µÏñ£¬ÕâЩ¾µÏñδ±ØÓÐÓᣴËʱ¾Í¿ÉÒÔ»ùÓÚ¸ø¶¨µÄÕýÔò±í´ïʽ£¬½«ÕâÑùµÄ¾µÏñÇåÀíµô¡£

»ùÓÚdocker 1.7.0×ö¹Â¶ùÊý¾Ý¾íµÄÇåÀí¹¤×÷¡££¨¹Â¶ùÊý¾Ý¾í£ºÓÐdata volumeµÄÈÝÆ÷ÔÚɾ³ýʱûÓÐÖ¸¶¨£­v²ÎÊý£©

ÌṩUI½çÃæ¡£

HackathonµÄ±¨µÀ·ÖÏíµÃÌ«¶àÈÝÒ×ռƪ·ù£¬Èç¹û´ó¼Ò¸ÐÐËȤ£¬¿ÉÒÔ²éÔÄ£ºDockerConÖ®ºÚ¿ÍÂíÀ­ËɼûÎÅ

µÚÈý»·½Ú£ºDockerConÊ¢µä

·ÖÏíDockerCon¼ûÎÅ£¬DockerConÁ½Ìì·¢ÉúµÄÄÚÈÝ×ÔÈ»ÊÇÖØÍ·Ï·¡£Õⲿ·ÖµÄ·ÖÏí£¬ÎÒÖ÷Òª·ÖΪÁ½²¿·Ö£ºµÚÒ»£¬keynotesµÄÄÚÈÝ£¬²¢Í¨¹ý¼¸¸ö¹Ø¼ü×Ö½øÐнéÉÜ£»µÚ¶þ£¬½éÉÜÎҲμӵö·Ö»á³¡µÄtopicÄÚÈÝ¡£

3.1 keynotes¹Ø¼ü×Ö

3.1.1 OCP

DockerÁªºÏÖÚ¶àIT¾ÞÍ·£¬¹²½¨ÍêÈ«¿ª·ÅµÄÈÝÆ÷±ê×¼£¬ÃûΪOCP£¬ÒâΪ¡°¿ª·ÅʽÈÝÆ÷ÏîÄ¿¡±£¬ÎÒ¹úµÄ¹«Ë¾»ªÎªÒ²ºÕÈ»ÔÚÁС£OCPÊÇÈ«ÇòÊ׸öÈÝÆ÷¼¼Êõ½ç¿ª·Å²¢Í³Ò»µÄ±ê×¼¡£

OCPµÄµ®ÉúÒâζ×ÅDockerÓëCoreOSÖ®¼äÔøÓеÄÈÝÆ÷±ê×¼Ö®Õù£¬ÔݸæÒ»¶ÎÂä¡£OCPµÄ¿ª·ÅÐÔʹµÃÈÝÆ÷µÄ±ê×¼Äܹ»µÃµ½¸üºÃµÄÍêÉÆ¡£

OCPʹµÃÈÝÆ÷µÄ·¢Õ¹Äܹ»±»¹ã·ºÈÏͬ²¢Ö§³Ö£¬¸öÈË»òÍŶÓÉìÖ±ÆóÒµ¶ÔÈÝÆ÷¼¼ÊõµÄ¹²ÏíÄܹ»¸ü¶àµÄ±»Ë¼¿¼£¬Äܹ»¸ü¶àµÄ±»Êµ¼ù£¬Æä·¢Õ¹¶ÔÈÝÆ÷µÄÓ°Ïì¾ø¶Ô²»¿ÉС¹À¡£

3.1.2 ÐÂÏîÄ¿

Experimental binary

DockerµÄexperimental binaryÊÇÄÇÖÖ¹¦Äܷdz£Ç¿´ó¡¢µ«²»¿ÉÄܱ»¼ÓÈëDocker¹Ù·½°æ±¾µÄ¹¦ÄÜ×é¼þ¡£ÕâÖÖʵÑéÐÔÖʵĹ¹½¨ÔÊÐíÓû§×ÔÐÐÌåÏÖDockerµÄй¦ÄÜ£¬²¢ÇÒ¸øDockerµÄά»¤ÕßÌṩ·´À¡¡£Í¨¹ýÕâÖÖ·½Ê½£¬Docker¹Ù·½Ï£Íû¿ÉÒÔ½«Ò»Ð©Ð¹¦ÄÜÔ¤Ïȱ©Â¶¸øÈ«ÇòµÄ¿ª·¢Õߣ¬´Ó¶øÈôó¼ÒÔÚʵ¼ùÒÔ¼°·´À¡ÖÐÖØËÜÕâÐ©ÖØÒª¹¦ÄÜ¡£

Ŀǰ£¬DockerµÄÍøÂç²å¼þÒÔ¼°Êý¾Ý¾ívolume²å¼þÊÇ×îÏÈÎÊÊÀÓë´ó¼Ò¼ûÃæµÄÊÔÑéÐÔ¹¦Äܲå¼þ¡£

Docker plugins

DockerµÄ¿ÉÀ©Õ¹ÐÔÔٴα»Solomom¼°ÆäÍŶÓÌáÉÏÒé³Ì²¢Êµ¼ù¡£Ä¿Ç°£¬DockerµÄnetworkÄ£¿é£¬Êý¾Ý¿âvolumeÄ£¿é£¬swarmÖеĵ÷¶ÈÄ£¿éÒÔ¼°·þÎñ·¢ÏÖÄ£¿é£¬¾ùÒѾ­Öð½¥±»²å¼þ»¯£¬ÌåÏÖDockerÉú̬ÖÐÈí¼þÇ¿´óµÄÀ©Õ¹ÐÔÄÜÁ¦Ö®Í⣬¸üÌåÏÖÁËDockerÉú̬µÄ¿ª·ÅÐÔ¡£µ±È»³ýÁËÒÔÉÏÕâЩÒѾ­Ö§³ÖµÄ²å¼þÖ®Í⣬δÀ´µÄ²å¼þ±Ø¶¨»á¸ü¶à¡£

´ËÍ⣬²å¼þµÄʹÓ㬶ÔÓÚDocker DaemonÒÔ¼°ÆäËûµÄÈí¼þÄ£¿éûÓÐÆäËûµÄpatchÒýÈ룬Ȼ¶øÄ¿Ç°ÈÔÈ»ÐèÒªÖØÆôDocker Daemon»òÕ߯äËûÈí¼þ¡£ÁíÍ⣬²å¼þµÄÖ§³Ö£¬¶ÔÓÚDockerÓ¦ÓöøÑÔÊÇÈ«ÅÌ͸Ã÷µÄ£¬²å¼þµÄÒýÈë²»»á¸Ä±äÔ­ÓÐDockerÓ¦ÓõÄʹÓ÷½Ê½¡£

Docker Notary for security

NotaryÓÉserver¶ËºÍclient¶Ë×é³É£¬Server¶ËÖ÷ÒªÔËÐв¢Î¬»¤Ò»¸öÈÝÆ÷µÄÊÜÐż¯ºÏ£¬Client¶ËÓÃÒÔÓëServer½»»¥×îÖÕʵÏÖ°²È«ÈÎÎñµÄ·Ö·¢¡£

×ÜÌå¶øÑÔ£¬NotaryÏ£ÍûÌṩһÖÖ¼òµ¥µÄ·½Ê½£¬±ãÓÚÓû§¸ü°²È«µÄ·¢²¼ÒÔ¼°ÑéÖ¤ÍøÂçÊý¾Ý¡£Ô­ÔòÉÏ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýTLS°²È«´«Êä²ãЭÒé±£ÕÏͨÐÅË«·½µÄ°²È«ÐÔ£¬È»¶øÕâ±¾ÖÊÉÏ´æÔÚȱÏÝ£¬Ô­ÒòºÜ¼òµ¥£¬Server¶ËµÄÈκÎÊèºö£¬¶¼½«µ¼Ö¶ñÒâÄÚÈÝÌæ»»ºÏ·¨ÄÚÈÝ£¬´Ó¶øÇ°ÕßΣ¼°ÍøÂçͨÐÅ¡£

ÔÚNotaryµÄ°ïÖúÏ£¬ÍøÂçÄÚÈݵķ¢²¼Õß¿ÉÒÔͨ¹ýÇ¿°²È«µÄkey¶ÔÓû§ÄÚÈݽøÐÐÇ©Ãû¼ÓÃÜ¡£Ò»µ©Íê³É²¢×¼±¸·¢²¼£¬ÔòÄÚÈÝÊ×Ïȱ»ÍÆËÍÖÁNotaryÊÜÐŵļ¯ºÏÖС£·ÃÎÊÕßÖ»ÓÐͨ¹ý°²È«ËíµÀ»ñÈ¡ÁË·¢²¼ÕߵĹ«Ô¿Ö®ºó£¬²ÅÄܺÍNotaryÖеÄÈÎÒâserver½¨ÒéͨÐÅ£¬²¢·ÃÎʵ½ºÏÊÊ׼ȷµÄ×ÊÔ´¡£

runC.io

runCÊÇÒ»¸öOS²ãÃæÍ¨ÓõÄÔËÐÐʱ»·¾³£¬¶øÇÒ½ö½öÊÇOS²ãÃæµÄÔËÐÐʱ¡£ÏîÄ¿µØÖ·£º[https://runc.io]

Docker¹Ù·½Ðû³ÆrunCÒÔ¼°Í¨¹ýÈ«Ãæ²âÊÔ£¬²¢ÇÒproduction-ready¡£

ÔÚ¹¦ÄÜ·½Ã棬runCÖ§³ÖLinuxËùÓеİ²È«ÌØÐÔ£¬±ÈÈ磺SELinux£¬apparmor£¬cgroups£¬seccompµÈ¡£

Ö§³ÖĿǰÁ¬docker¶¼²»Ö§³ÖµÄuser namespace

Ö§³ÖÈÝÆ÷µÄÈÈÇ¨ÒÆ¡£

΢ÈíÕýÔÚ»ý¼«¿ªÕ¹windows¶ÔrunCµÄÖ§³Ö¡£

ARMÌåϵµÄÖ§³ÖÒ²ÕýÔÚ»ý¼«½øÕ¹ÖС£

IntelÒ²ÔÚ¶ÔDPDK¹±Ï×

Ã÷È·Á˱ê×¼»¯¡¢¿ÉÒÆÖ²¡¢¿ÉÔËÐеĸñʽ

¼æÈÝÓÚÃüÁîÐÐÐÎʽÒÔ¼°±à³Ì·½Ê½

3.1.3 Éú²ú»¯

Docker HubÏßÉÏ·þÎñµÄÔöÇ¿ºÍ¸Ä½ø

Éý¼¶µ½V2 open source registry

ÓÅ»¯ºó¶Ë£¬ÊµÏÖÁ˸ü¿ìµÄÏÂÔØËÙ¶È£¬¸üÉٵĿͷþ¶Ë/·þÎñÆ÷¶ËµÄ½»»¥´ÎÊý

Ìá¸ßÎȶ¨ÐÔ¡¢ÕûÌåÓû§ÌåÑéÌáÉý

еÄUI½çÃæ

ÌáÉý°²È«ÐÔ·½ÃæDocker×öÁ˺ܶàŬÁ¦£¬°üÀ¨

authentication micro services

content-addressable images

one time use build hosts

on-ging scanning and auditsµÈµÈ¡£

Ocra

Project OrcaµÄÔ¸¾°ÊÇÌṩһÌ××ÔÉ϶øÏµÄÕûºÏÕ»£¬Äܹ»×¥È¡ËùÓеŤ¾ßºÍplumbing£¨Docker Engine¡¢Docker Swarm¡¢Networking¡¢GUI¡¢Docker Compose¡¢°²È«¡¢°²×°¹¤¾ß¡¢²¿Êð¡¢ÅäÖõȣ©¡£Project Orca·Ç³£Êʺϡ°build£­ship£­run¡±ÖС°run¡±µÄ²¿·Ö¡£

´ú±í×ÅDocker¿ªÊ¼ÕæÕýµÄ½ø¾üÆóÒµÊг¡£¬Ë½Óл¯ÈÝÆ÷¹ÜÀí½â¾ö·½·¨DockerÍÆ³ö½â¾ö·½°¸¡£

3.2 ·Ö»á³¡·ÖÏí

3.2.1DockerµÄ°²È«

DockerÄÜÌṩµÄ°²È«±£ÕϽ«º­¸ÇÒÔÏÂ7µã£º

namespace±£ÕÏϵͳ×ÊÔ´µÄ¸ôÀë

cgroupÍê³É½ø³Ì×é×ÊÔ´µÄÏÞÖÆ

LinuxµÄ°²È«Ä£¿éÌṩMAC£¨apparmor£¬ SELinux£©

capabilities½«rootµÄȨÏÞϸ·ÖΪ¶àÖÖÀàÐÍ

ulimitµÄ¹¦Äܸü¶àά¶ÈµÄÏÞÖÆ×ÊÔ´£¨docker 1.6Ö®ºóÖ§³Ö£©

user namespace±£ÕÏÈÝÆ÷ÄÚ²¿µÄrootÔÚhostÉϲ¢·Çroot£¨Ô¤¼Ædocker 1.8Ö§³Ö£©

seccompʹµÃÈÝÆ÷ÄÚ½ø³ÌÊܵ½ÏµÍ³µ÷ÓÃȨÏ޵ĿØÖÆ

DockerÔÚ°²È«·½Ã滹×öÁËÒÔϹ¤×÷£º

½µµÍ¾µÏñ´øÀ´µÄ°²È«·çÏò

ÉèÖøüΪ¾«¼òµÄLinux·¢Ðа棺

ÒÆ³ý²»ÐèÒªµÄpackage¡¢Óû§ÒÔ¼°¶þ½øÖƹ¤¾ßÎļþ

Ìá³öTailored Profiles

ÈÝÆ÷¿ÉÒÔ´´½¨least-privildgeµÄÎļþ

ÎļþÓÐÄÜÁ¦ËæÈÝÆ÷´«µÝ

ͨ¹ý¶ÀÁ¢µÄÎļþÅäÖñíÃ÷ËùÓеÄȨÏÞ

ÒѾ­¹æ»®ÈërunC

ÃèÊöËùÓеĸôÀëÌØÐÔ

ÖµµÃÌá¼°µÄÊÇ£ºDockerCon°²È«»°ÌâµÄ·ÖÏíÕߣ¬¸ÐлÁËÀ´×ÔÖйúµÄ»ªÎª¹«Ë¾¡£

3.2.2 NetflixµÄDockerÆóÒµ¼¶Êµ¼ù

ΪʲôѡÔñDocker£¿

1. ÔÚnetflixÄÚ²¿½ø³Ì¸ôÀëµÄÐèÇóºÜ´ó

2. DockerÓÐÄÜÁ¦½«Öڶ๦Äܼ¯Ò»Éí£¬²¢´ò°ü³ÉÒ»¸öDocker¶þ½øÖÆÎļþ£¬Óû§Íê³ÉÎÞÐè¹ØÐÄÓëlinuxÄÚºËÓëÆäËûÌØÐÔÖ®¼äµÄÒÀÀµ¹ØÏµ£¬Ö»Ðè²Ù×ÝDocker¼òÒ×µÄAPI¼´¿É

3. DockerµÄÖܱ߹¤¾ßÁ´µÄ·¢Õ¹ÒÔ¼°¼¯Èº¼äÓ¦Ó÷¢²¼µÄ¿ÉÀ©Õ¹ÐÔ´ó´óÎüÒýÁËNetflix

DockOne¼¼Êõ·ÖÏí£¨Ê®¶þ£©£ºÐÂÀËÊÇÈçºÎ·ÖÎö´¦Àí32ÒÚÌõʵʱÈÕÖ¾µÄ£¿

ÎÒ´Ó2014Äê³õÈëÖ°ÐÂÀ˺ó¾Í¿ªÊ¼½Ó´¥ÊµÊ±ÈÕÖ¾·ÖÎöÏà¹ØµÄ¼¼Êõ£¬Ö÷ÒªÊÇELK£¨Elasticsearch¡¢Logstash¡¢Kibana£©£¬µ±Ê±ÊÇѧϰ+ELKÓÅ»¯£¬½ÓһЩÈÕÖ¾£¬Ð¡´òСÄÖ¡£´Ó2015ÄêÆð£¬ÎÒÃÇÕýʽµÃ°ÑʵʱÈÕÖ¾·ÖÎö×÷Ϊ·þÎñÌṩ¸ø¹«Ë¾µÄÆäËû²¿ÃÅ¡£½ñÌìÒª¸ø´ó¼Ò·ÖÏíµÄÊÇÔÚ·þÎñ»¯µÄµÀ·ÉÏ£¬ÎÒÃǵÄÏë·¨£¬·½°¸ºÍÒÉÎÊ¡£

·þÎñ½éÉÜ

Ëæ×Åʵʱ·ÖÎö¼¼ÊõµÄ·¢Õ¹¼°³É±¾µÄ½µµÍ£¬Óû§ÒѾ­²»½ö½öÂú×ãÓÚÀëÏß·ÖÎö¡£Ä¿Ç°ÎÒÃÇ·þÎñµÄÓû§°üÀ¨Î¢²©¡¢Î¢ÅÌ¡¢ÔÆ´æ´¢¡¢µ¯ÐÔ¼ÆËãÆ½Ì¨µÈÊ®¶à¸ö²¿ÃŵĶà¸ö²úÆ·µÄÈÕÖ¾ËÑË÷·ÖÎöÒµÎñ£¬Ã¿Ìì´¦ÀíÔ¼32ÒÚÌõ£¨2TB£©ÈÕÖ¾¡£

¼¼Êõ¼Ü¹¹

¼òµ¥½éÉÜһϷþÎñµÄ¼¼Êõ¼Ü¹¹£º

ÕâÊÇÒ»¸öÔÙ³£¼û²»¹ýµÄ¼Ü¹¹ÁË£º

£¨1£©Kafka£º½ÓÊÕÓû§ÈÕÖ¾µÄÏûÏ¢¶ÓÁС£

£¨2£©Logstash£º×öÈÕÖ¾½âÎö£¬Í³Ò»³ÉJSONÊä³ö¸øElasticsearch¡£

£¨3£©Elasticsearch£ºÊµÊ±ÈÕÖ¾·ÖÎö·þÎñµÄºËÐļ¼Êõ£¬Ò»¸öschemaless£¬ÊµÊ±µÄÊý¾Ý´æ´¢·þÎñ£¬Í¨¹ýindex×éÖ¯Êý¾Ý£¬¼æ¾ßÇ¿´óµÄËÑË÷ºÍͳ¼Æ¹¦ÄÜ¡£

£¨4£©Kibana£º»ùÓÚElasticsearchµÄÊý¾Ý¿ÉÊÓ»¯×é¼þ£¬³¬Ç¿µÄÊý¾Ý¿ÉÊÓ»¯ÄÜÁ¦ÊÇÖڶ๫˾ѡÔñELK stackµÄÖØÒªÔ­Òò¡£

ŬÁ¦Ìṩ¸üºÃµÄ·þÎñ

ÎÒÕâ´Î·ÖÏíµÄÖØµã²»ÊÇÕâÖּܹ¹µÄÓÅÁÓ»òΪʲôѡÔñÕâÑùµÄ¼Ü¹¹£¬¶øÊÇÔÚÈç´ËµÄ¼Ü¹¹ÉÏÈçºÎ¸üºÃµØ´«µÝʵʱÈÕÖ¾·ÖÎöµÄ¼ÛÖµ¡£ÎªÓû§×öºÃ·þÎñÒ²²»ÊÇÐ޸öÅäÖÃÎļþ£¬µ÷Óż¸¸ö³ÌÐòÔËÐвÎÊý¾ÍÄܸ㶨µÄ¡£ÎªÁËÌṩ¸üºÃµÄ·þÎñ£¬ÎÒÃÇÔÚÏÂÃæÈý¸ö·½Ïò×öÁËŬÁ¦£º

Ò»¡¢ÌáÉý·þÎñÖÊÁ¿

ÎÒÃÇÊ×ÏÈ×öÁËElasticsearchÓÅ»¯£¬Hardware LevelÓÉÓÚÎÒÃǵ±Ê±Äõ½»úÆ÷ûÓÐÑ¡ÔñÓàµØ£¬Ö»¿ªÆôÁ˳¬Ị̈߳»System LevelµÄÓÅ»¯Èç¹Ø±Õswap£¬µ÷Õûmax open filesµÈ£»App LevelµÄÓÅ»¯ÈçJavaÔËÐл·¾³°æ±¾µÄÑ¡Ôñ£¬ES_HEAP_SIZEµÄÉèÖã¬ÐÞ¸Äbulk indexµÄqueue sizeµÈ£¬ÁíÍ⻹ÉèÖÃÁËĬÈϵÄindex template£¬Ä¿µÄÊǸü¸ÄĬÈϵÄshard£¬replicaÊý²¢½«string¸ÄΪnot_analyzed£¬¿ªÆôdoc_valuesÒÔÓ¦¶Ôelasticsearch½ø³ÌOOM¡£ÏêϸµÄÓÅ»¯ÄÚÈݼûElasticsearch Optimization Checklist¡£

Ëæ×ÅÓû§Êý¾ÝµÄ²»¶ÏÔö³¤£¬index¹ÜÀíÒ²³ÉÁË´óÎÊÌ⣬ÎÒÃÇÐèÒª»ùÓÚ´óÁ¿²»Í¬µÄÓû§ÅäÖö¨ÆÚµÄcreate¡¢optimize¡¢close¡¢delete¡¢snapshot²»Í¬µÄindex£¬ÔÚij¸ö·þÎñÆ÷ÉÏÊÖ¹¤ÅäÖÃcrontabÒÑÊDz»¿ÉÄÜ£¬¶øÇÒcronÊǵ¥µã¡£ÓÚÊÇÎÒÃÇ¿ª·¢ÁËÒ»¸ö¶ÀÁ¢µÄElasticsearch Index¹ÜÀíϵͳ£¬¸ºÔðÒÔÉÏÈÎÎñµÄµ÷¶È¼°Ö´ÐС£Õâ¸ö¹ÜÀíϵͳ±³ºóʹÓõļ¼ÊõÊÇCelery£¬Ò»¸öÓÃPython¿ª·¢µÄÈÎÎñ¶ÓÁм°Ö´ÐÐϵͳ£¬ÌṩÁËÀàËÆcrontabµÄ¶¨Ê±ÈÎÎñÅäÖÃÓï·¨£¬²¢ÇÒʵÏÖÁË·Ö²¼Ê½£¬¿ÉÓÃÐÔ¸ü¸ßµÄ¼Ü¹¹¡£

×î½üµÄ·þÎñÉý¼¶£¬ÎÒÃÇΪElasticsearch°²×°ÁËHDFS Snapshot²å¼þ£¬¿ÉÒÔ¶¨ÆÚ½«index±¸·Ýµ½HDFS£¬Õâ¸ö¹¦ÄÜĿǰÖ÷ÒªÓÃÓÚ±¸·ÝKibanaµÄÅäÖÃindex£¬ÓÃÒÔ»Ö¸´Óû§²é¿´»òÅäÖÿÉÊÓ»¯½çÃæÊ±µÄ´íÎó²Ù×÷¡£

¼à¿Ø±¨¾¯·½Ã棬System LevelµÄ¼à¿Ø±¨¾¯£¨ÈçÓ²ÅÌÂú¡¢Ë𻵡¢·þÎñÆ÷å´»ú£©Ö±½ÓʹÓÃÁËÔÚÐÂÀËÄÚ²¿ÌṩÁ˶àÄê·þÎñµÄsinawatch£»App Level£¨ÈçElasticsearch JVM Heap Usage¹ý¸ß£¬KibanaÄÜ·ñÕý³£·ÃÎÊ£¬Kafka topicµÄconsumer offset lag£©£¬ÎÒÃÇ¿ª·¢Á˶ÔÓ¦µÄ¼à¿Ø±¨¾¯½Å±¾¡£User Level£¨ÈçÈÕÖ¾½âÎöʧ°ÜÊýÁ¿£©£¬Ö÷Ҫͨ¹ýelasticsearch python clientÖ´ÐÐqueryȥͳ¼Æ»òËÑË÷¡£³£¼ûµÄ±¨¾¯ÊÇLogstash-filter-grok£¬logstash-filter-json½âÎöÈÕ־ʧ°Ü»áÊä³öµÄjsonÖÐÌí¼Ó_grokparserfailure¡¢_jsonparsefailure£¬ÎÒÃÇÖ´ÐÐqueryÅжϽâÎö´íÎóµÄÁ¿¡£

Ҫ˵Ã÷µÄÊÇ£¬MarvelÊÇElasticsearchºÜºÃµÄ¼à¿Ø¹¤¾ßºÍ²å¼þ£¬µ«ÊÇËüÃÇÊÇÉÌÒµÈí¼þ£¬ÎÒÃÇûÓвÉÓá£MarvelÊÇ»ùÓÚKibana×öµÄ£¬ÀïÃæ¶ÔÒ»Ð©ÖØÒªÖ¸±ê£¨Èçindex bulk reject number£©µÄչʾºÜÓмÛÖµ¡£

¶þ¡¢ÔöÇ¿Ò×ÓÃÐÔ

ÔöÇ¿·þÎñµÄÒ×ÓÃÐÔ¾ÍÊǸøÓû§¸üºÃµÄÓû§ÌåÑ飬¼õÉÙÓû§µÄ±§Ô¹¡£ELKÐÔÄÜÓÅ»¯ÊÇÒ»·½Ã棬µ«ËüÊÇÔ¶Ô¶²»¹»µÄ£¬ÎÒÃÇÓöµ½µÄʵ¼ÊÇé¿öÊÇ£¬Óû§ÔÚÆäËû·½Ãæ±§Ô¹¸ü¶à£¬ÈçÏ£º

1£¬Óû§×îÏȱ§Ô¹µÄÊÇIP½âÎö³ÉµØÇø¡¢ISPÐÅÏ¢Ò»µã¶¼²»×¼£¬ÍêȫûÓвο¼ÒâÒå¡£

Èç¶ÔÓÚCDNÕâÖÖ·þÎñ£¬ÎÒÃǽâÎöÓû§IP²»×¼£¬¶¨Î»ÎÊÌâ±ßÔµ½Úµã´íÎó£¬ÎÊÌâû·¨²é£¬ÕâÊǰﵹæ¡£Ô­Òò£ºLogstashĬÈÏ×Ô´øµÄIP¿âÊǹúÍâmaxmind¹«Ë¾µÄÃâ·Ñ°æ±¾£¬ÖйúµÄÐÅÏ¢ÓÈÆä²»×¼¡£½â¾ö·½°¸£ºÊ¹ÓÃÎÒÀ˽ÏнÏÈ«µÄIP¿âÉú³ÉÄÜÊÊÅämaxmind geoip2 apiµÄ¶þ½øÖƸñʽIP¿â£¨maxmindDB£©£¬ÔÙ¿ª·¢logstash-filter-geoip2À´½âÎöIP¡£Êµ²â²»½öIP½âÎö׼ȷÂÊÓ빫˾IP¿âÏàͬÁË£¬½âÎöËÙ¶ÈÒ²Ìá¸ßÁË¡£

2£¬È»ºóÎÒÃÇÓëÓû§¶¼·¢ÏÖÈÕÖ¾½ÓÈëÁ÷³Ì¸´ÔÓ£¬¹µÍ¨À§ÄÑ¡£

ÈË×ö²»µ½»úÆ÷ÄÇÑù·ÖºÁ²»²î£¬ÓÐɶ˵ɶ¡£½ÓÈëÓû§ÈÕÖ¾µÄʱºò£¬ÀýÈç³£³£ÒòΪÓû§¶ÔÈÕÖ¾¸ñʽ±í´ïµÄ²»È«Ã棬ģÀâÁ½¿É£¬µ¼ÖÂÈÕÖ¾½âÎöʧ°Ü£¬·þÎñ¶Ô½ÓÈ˶à´ÎÖØÐ´ÅäÖᣴÓÓû§ÌáÐèÇóµ½Óû§¿ÉÒÔ¿´µ½Êý¾Ý¿ÉÊÓ»¯Ð§¹û»òËѵ½ÈÕÖ¾£¬ÐèÒª¼¸¸öСʱµ½¼¸Ìì¡£Ò»À´¶þÈ¥£¬Óû§ºÍÎÒÃǶ¼·³ÁË£¬Ö»ÄÜÇó±ä¡£Îª´Ë£¬ÎÒÃÇÕýÔÚÖð²½ÊµÏÖÓû§Êý¾Ý½ÓÈëµÄ×Ô¶¯»¯£¬¼õÉÙ½ÓÈëʱ¼äºÍ¹µÍ¨³É±¾Õâ¸ö¹ý³ÌÐèÒª3¸ö¹Ø¼ü£ºA.Óû§ÅäÖÃÈÕÖ¾¸ñʽµÄ½çÃæ£¬¾¡¿ÉÄܼò½à¼òµ¥£»B.¸ù¾ÝÓû§ÅäÖÃ×Ô¶¯Éú³Élogstash config¡¢index¹ÜÀíÐèÒªµÄÅäÖã»C.×Ô¶¯²¿ÊðÅäÖã¨logstash configµÈ£©£¬´òͨÈÕÖ¾Á÷¡£

ºóÀ´ÎÒÃÇ×öÁËÒ»¸ö¼òµ¥µÄÓÃÀ´Ð­ÉÌÈÕÖ¾¸ñʽµÄ½çÃæ£º

ĿǰÎÒÃÇÒÑÍê³ÉÁËAµÄÒ»²¿·Ö£ºÓû§ÈÕÖ¾¸ñʽÅäÖýçÃæ£»BµÄÈ«²¿£º¿ª·¢ÁË×Ô¶¯Éú³Élogstash confµÄ python api£»C¼´½«¿ªÊ¼£¬²¢ÇÒ¿¼ÂÇʹÓÃDocker¼¼ÊõΪÎÒÃÇÌṩһЩ±ãÀû¡£

3£¬²¿·ÖÊý¾Ý¿ÉÊÓ»¯ÐèÇóµÃ²»µ½Âú×㣬KibanaÅäÖÃÄѶȴó¡£

ÎÒÃÇÆð³õ²ÉÓùٷ½Kibana v3£¬Óû§Ìá³öµÄÀàËÆSQLÖеĶà¸ögroup by£¬»­°Ù·Ö±È£¬ÇóÖ¸¶¨Çø¼äÕ¼±ÈµÈ³£¼ûÐèÇóÎÞ·¨Âú×ã¡£Ö®ºóͨ¹ýÈý¶·´óÉñ(΢²©@argv)¶¨ÖưæµÄKibana 3Âú×ãÁËһЩÓû§ÐèÇó¡£Kibana 4µ®Éúºó£¬´úÂ뼸ºõÊǶÔKibana3µÄÖØÐ´£¬×öÁË´ó·ù¸Ä½ø£¬Í¨¹ýElasticsearch AggregationµÄÇ¿´óÊý¾Ýͳ¼Æ¹¦Äܼ°Áé»îµÄÅäÖôÓKibana 3½â·Å³öÀ´¡£½üÆÚÎÒÃǽ«Ç¨ÒƵ½Kibana 4¡£

Èý¡¢Ìṩй¦ÄÜ

ÎÒÃÇΪElasticsearch°²×°Á˹úÄÚmedcl´óÉñ¿ª·¢µÄikÖÐÎķִʲå¼þelasticsearch-analysis-ik¡£Ö®Ç°±»·Ö´ÊΪ¡ºÖС»ºÍ¡º¹ú¡»µÄÖйú£¬ÏÖÔÚÖÕÓÚ¿ÉÒÔ±»µ±×öÒ»¸öÍêÕûµÄ´Ê»ã£¬·ñÔòËÑË÷¡ºÖйú¡»¡¢¡ºÃÀ¹ú¡»Ò²»á³öÏÖ¡£Î¢Å̵ÄһЩÀëÏßËÑË÷ÐèÇóʹÓÃÁËÎÒÃǵķþÎñ£¬Ò²Óõ½ÁËÖÐÎÄ·Ö´Ê£¬ElasticsearchµÄËÑË÷Ì츳Âú×ãÁËËûÃǵÄÐèÇ󣬼õÉÙÁËËûÃǵÄÍ´¿à¡£

ÎÒÃǾ­Àú¹ýµÄ¿ÓºÍ¿²¶ù£º

1£¬elasticsearch ½ø³ÌJVM Heap High Usage£¨ > 90% £©¡£

ºÜ³¤Ò»¶Îʱ¼ä£¬ÎÒÃǶ¼ÔÚÓ¦¶ÔJVM Heap High Usage£¬Ëû´øÁ˵ÄÎÊÌâÊÇOld GC´ÎÊý¶à£¬Ê±¼ä³¤£¬es½ÚµãƵ·±Í˳ö¼¯Èº£¬Õû¸ö¼¯Èº¼¸ºõÍ£Ö¹ÏìÓ¦¡£ÏÖÔÚÎÒÃǵÄÖ÷Òª²ßÂÔÊÇ¿ªÆôdoc_values£»ÏÞÖÆqueryÖ´ÐÐʱռÓõÄJVM Heap size£»analyzed stringÖ»ÔÊÐí×öquery£¬²»ÔÊÐífacets»òÕßaggs£»¶¨ÆÚclose Óû§²»ÐèÒªµÄindex¡£

2£¬Elasticsearch Query DSL¡¢Facets¡¢AggsѧϰÀ§»ó¡£

ÓÐÈËΪ´Ë¿ª·¢ÁËʹÓÃSQLÖ´ÐÐES QueryµÄ²å¼þ£¬Ò»¶¨³Ì¶ÈÉϼõÇáÁ˽øÈëÃż÷¡£ÎÒÃǸø³öµÄѧϰËûÃǵĽ¨ÒéÊǹ۲ìKibanaµÄRequest Body»òÊÔÓÃMarvelµÄSenese²å¼þ£¬ËüÓÐ×Ô¶¯Íê³ÉQuery¡¢Facets¡¢AggsµÄ¹¦ÄÜ¡£ÁíÍâ×î³£ÓõÄqueryÊÇquery string query£¬×î³£ÓõÄaggsÊÇTerms¡¢Date Histogram£¬¿ÉÒÔÓ¦¸¶´ó²¿·ÖÐèÇó¡£

3£¬logstash²»¹¤×÷¡£

·Ç¹Ù·½µÄÎÊÌâ²å¼þ£¬¼°Ê¹ÓÃlogstash-filter-rubyʱδ¿¼Âǵ½µÄÒì³£µÈ£¬µ¼ÖÂLogstashÔËÐÐʱ¹¤×÷Ị̈߳¨worker thread£©Òì³£Í˳ö£¬Logstash½©ËÀ¡£ÎÒÃǵĽ¨ÒéÊǾ¡¿ÉÄܲ»ÒªÔÚconfigÖÐʹÓÃlogstash-filter-ruby£¬¾¡Á¿Ê¹Óùٷ½²å¼þ¡£²»¹ýÎÒÃÇÒ²Óöµ½¹ý¸´ÔÓµÄÈÕÖ¾£¬Ð´¹ý250ÐÐ+µÄconfig£¬Óþ¡ÁËruby filter¡£µ±Ç°Î´·¢ÏÖLogstashÓкõijÉÊìµÄ¼à¿Ø·½°¸£¬LogstashµÄÄÚ²¿×´Ì¬Ò²»ñÈ¡²»µ½¡£ÎÒÃÇĿǰͨ¹ý¼ä½ÓµÄ¼à¿ØKafka topic consumerÊÇ·ñÂäºó»òelasticsearch indexing rateÀ´¼ìÑélogstashµÄ¹¤×÷Çé¿ö¡£

4£¬KibanaûÓÐÓû§µÄ¸ÅÄ²»Í¬Óû§µÄÊý¾ÝÎÞ·¨¸ôÀë¡£

¶à¸öÓû§¹²ÏíµÄKibana Dashboard£¬Îó²Ù×÷»òÎóɾʱ³£Ó°ÏìÆäËûÓû§£¬±£´æµÄdashboardÌ«¶à£¬ÕÒµ½Ìض¨µÄdashboardºÜÀ§ÄÑ¡£¹Ù·½µ½Ä¿Ç°ÎªÖ¹£¬Î´ÔÚÕâ·½Ãæ×ö¹ý¸Ä½ø¡£Óкܶà·Ç¹Ù·½µÄ¸Ä½ø£¬ÎÒÃÇÒ²Ôø¾­ÓùýÈý¶·´óÉñ¶¨ÖƵÄKibana3£¬Ò²¶ÔKibana index×öÁËsnapshot´¢´æµ½HDFSÀïÃæ¡£

5£¬ÓëÓû§¹µÍ¨³É±¾¸ß¡£

ÓëÎÒÃǵÄÓû§Ð­ÉÌÈÕÖ¾¸ñʽ£¬Êý¾Ý¿ÉÊÓ»¯ÅäÖÃʱ£¬ÓÉÓÚÈ˵IJ»È·¶¨ÐÔÈÝÒ×Ôì³É¶à´ÎÀ´»ØÈ·¶¨ºÍÐ޸ģ¬Ð§ÂʵÍÏ¡£ÎÒÃDZϾ¹ÊÇÌṩÈÕÖ¾·ÖÎö·þÎñµÄ£¬²»¸øÓû§×öÈÕÖ¾ÔËά£¬ËùÒÔ½üÆÚÒ²ÔÚ̽Ë÷ͨ¹ýÈÕÖ¾½ÓÈë×Ô¶¯»¯¡¢ÍƼöÓû§Ìṩ¸øÎÒÃÇjson¸ñʽÊý¾Ý£¬¶¨ÆÚ×éÖ¯Óû§µÄKibanaÅàѵÀ´¼õÉÙ¹µÍ¨³É±¾¡£

DockOne¼¼Êõ·ÖÏí£¨Ê®Èý£©£ºÊ®¸öÎÊÌâ´øÄãÁ˽âWindows Docker

΢ÈíÔÚ5Ô·ÝBuild´ó»áÉϵĹٷ½Ëµ·¨£¬ËµÊÇÕâ¸öÏÄÌì»á·Å³öWindows Server ContainerµÄ²âÊÔ°æ¡£Ò²¾ÍÊÇ˵£¬Ä¿Ç°ÎÒÃÇ»¹ÎÞ·¨¿´µ½Windows DockerµÄ²âÊÔ°æ±¾£¬ÎÞ·¨Ö±½ÓÉÏÊÖ²âÊÔ¡£

΢ÈíÔÚ5Ô·ÝBuild´ó»áÉϵĹٷ½Ëµ·¨£¬ËµÊÇÕâ¸öÏÄÌì»á·Å³öWindows Server ContainerµÄ²âÊÔ°æ¡£Ò²¾ÍÊÇ˵£¬Ä¿Ç°ÎÒÃÇ»¹ÎÞ·¨¿´µ½Windows DockerµÄ²âÊÔ°æ±¾£¬ÎÞ·¨Ö±½ÓÉÏÊÖ²âÊÔ¡£½ÓÏÂÀ´ÎҾʹó¼Ò¹ØÐĵÄÊ®´óÎÊÌâ½øÐнéÉÜ£º

1. Windows DockerºÍHyper-VÓÐÉ¶Çø±ð£¿

Hyper-VºÍVMware/Xen/KVMµÈÀàËÆ£¬¶¼ÊÇÓ²¼þÐéÄ⻯£¬°²È«µ«±¿ÖØ¡£

Windows DockerÊÇOSÐéÄ⻯¼¼Êõ£¬¾ß±¸Ò»¶¨µÄ¸ôÀëÄÜÁ¦£¬ÐÔÄܸüºÃ¡¢ÈÝÒ×ÒÆÖ²¡£

Á½Õß²»ÊÇ»¥ÏàÈ¡´úµÄ¹ØÏµ¡£

×¢Ò⣺Windows Docker²¢²»ÊÇÎÒÃÇÔÚDocker 1.6ʱ¼ûµ½µÄWindows Docker Client£¬Ò²²»ÊÇBoot2dockerÕâ¸öWindowsϵÄlinuxÐéÄâ»ú£¬¶øÊÇÕæÕýµÄWindows°æ±¾µÄDocker¡£ÆäʵÆäÕýʽÃû³Æ²¢²»½ÐDocker£¬¶øÊǽÐ×öWindows Server Container£¬»¹ÓÐHyper-V Container£¬ÓÐ2¸ö²úÆ·£¬ÆäÖÐWindows Server ContainerÀàËÆÓÚlinux Docker£¬¶øHyper-V ContainerÓÐЩÀàËÆÓÚclear linux»òÕßHyper Docker¡£

ÕâÊÇÒòΪDockerÊÇÉ̱êÃû³Æ£¬Î¢Èí²»ÄÜÖ±½ÓÄÃÀ´Ê¹Óá£

2. Windows DockerºÍSoftgrid(APP-V)/ThinstallµÈÓÐÉ¶Çø±ð£¿

DockerÊÇOSÐéÄ⻯£¬Ö÷Òª³¡¾°ÊÇ·þÎñ¶ËÓ¦Óã¬ÕâЩÈÝÆ÷(Ó¦ÓÃ)Ö®¼äͨ¹ý±ê×¼µÄÍøÂç½Ó¿Ú½øÐÐͨÐÅ£¬ºÃÏñÐéÄâ»úÒ»Ñù¡£

SoftgridÊÇÓ¦ÓóÌÐòÐéÄ⻯£¬Ö÷ÒªÓÃÓÚ¿Í»§¶ËÓ¦Óò¿Êð¡£ÀýÈçOffice£¬ÕâЩӦÓÃÔÚͬһ¸ö»á»°ÀïÔËÐУ¬ÍêÈ«¾ÍÊÇ´«Í³µÄÓ¦Ó㬱˴ËÖ® ¼ä¿ÉÒÔ½øÐнø³Ì¼äͨÐÅ£¬ÀýÈçWord¿ÉÒÔOLEµ÷ÓÃExcelµÄ±íµ¥µÈµÈ¡£²»Í¬µÄ½ø³Ì£¬¿´µ½µÄÎļþϵͳ²»»á¸ôÀë¡£ÊÊÓÃÓÚÅúÁ¿²¿Êð¿Í»§¶ËÓ¦Óá£

3. ÈÝÆ÷ºÍɳºÐÊÇʲô¹ØÏµ£¿

Ôø¾­¿´µ½Ò»¾äºÜ°ôµÄÆÀÓ±ØÐë·ÖÏí¸øÖîλ£º

Sandboxing is focused on just security with code isolation. Containers have some security code isolation, but this is not the only or primary purpose. One way to think about containers is as a layered/quarantined filesystem which makes it quick/easy/lightweight to run an application and also makes the application (in the container) very portable.

´ÓÏÂͼÖÐÎÒÃÇ¿ÉÒÔ¿´³ö£¬ÔÚWindows 10ÀIEµÄ¼ÌÈÎÕßEdgeä¯ÀÀÆ÷¾Í²ÉÓÃÁËɳºÐ¼¼Êõ¡£

ͬÑùÔÚ±£»¤Ä£Ê½ÏÂÔËÐеÄOfficeÎĵµ£¬Ò²ÔËÐÐÔÚ É³ºÐÀï¡£ÈçÏÂͼËùʾ¡£

¶øÈÝÆ÷£¬Ôò»¹±ØÐëÒªÔÚÒÆ¶¯ÄÜÁ¦ÉÏÓÐËù¿¼Á¿£¬È·±£ÈÃÓ¦Óã¬Ò²Äܱä³É°´ÐèµÝ½»µÄ¶¯Ì¬·þÎñ¡£ÒÔǰµÄÓ²¼þÐéÄ⻯£¬Äܽ«OS¡¢AppµÈ±ä³ÉÎĵµ£¬´Ó¶ø°Ñ·þÎñÆ÷×ÊÔ´±ä³É°´ÐèµÝ½»µÄ·þÎñ£¬ÏÖÔÚWindows DockerºÍlinuxÒ»Ñù£¬Ò²Äܱä³Éimage£¬±ä³ÉÎĵµ£¬±ä³É°´ÐèµÝ½»µÄ¶¯Ì¬·þÎñ¡£

4. Windows DockerºÍÆäËûOSÐéÄ⻯¹¤¾ßÖ®¼äÊÇʲô¹ØÏµ£¬ÀýÈçºÜÔç¾ÍÌýÎŵÄVPSµÈ£¿

´Ó¼¼Êõ½Ç¶È¿´£¬µ×²ãÔ­Àí´óͬСÒì¡£¿´Í¼°É¡£

DockerºÍÆäËûOSÐéÄ⻯¼¼ÊõÒ»Ñù£¬¼¼ÊõʵÏÖ´óÖ²¶à¡£¹Ø¼ü¿´Ë­ÄÜ´ø¶¯Éú̬Ȧ£¬Äܹ»Ó®µÃÆäËû³§É̵ÄÖ§³Ö¡£Í¬Ê±DockerµÄ·Ö²ãÎļþ ϵͳʵÏÖ£¬Ò²ÊÇÆäÌØ±ðÒýÈËÈëʤµÄµØ·½¡£Õâ¸ö½ØÍ¼µÄÏÂÔØµØÖ·ÔÚÕâÀï¡£

5. Windows Docker·Ö²ãÎļþϵͳ£¿

ÏÈ¿´¿´LinuxµÄʵÏÖ¡£DaoCloudµÄ´óÅ£ËïºêÁÁÀÏʦָ³ö£º¼ÙÉèÎÒÃÇÏÂÀ­ÁËUbuntu:14.04Ó³Ïñ£¬²¢Í¨¹ýÃüÁîdocker run ¨Cit ubuntu:14.04 /bin/bash½«ÆäÆô¶¯ÔËÐС£ÔòDockerΪÆä´´½¨µÄrootfsÒÔ¼°ÈÝÆ÷¿É¶ÁдµÄÎļþϵͳ¡£²Î¿¼ÕâÕŽØÍ¼

´ÓÈÝÆ÷µÄÊÓ½ÇÀ´¿´£¬ËäȻֻÓÐÒ»¸öÂß¼­µÄÍêÕûÎļþϵͳ£¬µ«¸ÃÎļþϵͳÓÉ¡°2²ã¡±×é³É£¬·Ö±ðΪ¶ÁдÎļþϵͳºÍÖ»¶ÁÎļþϵͳ¡£ËïÀÏʦµÄÐÛÎÄÁ´½ÓÔÚ´Ë¡£

Windows Docker²ÉÓÃÀàËÆµÄ·Ö²ãÎļþϵͳ¡£²Î¿¼ÏÂͼ¡£

Windows Docker²ÉÓÃNTFSÎļþϵͳµÄÖØ½âÎöµã¼¼Êõ£¨reparse point£©£¬¶¥²ãµÄɳºÐ²ã(sandbox layer)ÊǿɶÁдµÄ£¬Ö»ÔÊÐí¸ÃÈÝÆ÷×Ô¼ºÕ¼Ó㬶øÆäËû²ã ÔòÊÇÖ»¶ÁµÄ¡£ÔÚÕâÕÅͼÖУ¬µ×²ãµÄ»ù´¡OS²ãºÍÖмäµÄÓ¦ÓóÌÐò¿ò¼Ü²ã¶¼ÊÇÖ»¶ÁµÄ£¬¶ø¶¥²ãµÄɳºÐ²ãÔò¿É¶Áд£¬ÔÚ ÈÝÆ÷µÄÊӽǿ´À´£¬Ëü¶ÀÕ¼ÁËÍêÕûµÄÎļþϵͳ¡£

ÕâÓеãÀàËÆÓÚHyper-VµÄ²îÒì´ÅÅÌÁ´£¨¶¥²¿µÄ×ÓÅ̲ÅÄܶÁд£¬ÆäÉÏ·½µÄËùÓи¸Å̺ÍBaseÅ̶¼ÊÇÖ»¶ÁµÄ£©¡£

Windows DockerµÄ·Ö²ãÎļþϵͳ£¬ÎÒÊǽ«ÆäÀí½âΪÀàËÆ·ûºÅÁ´½Ó(½ö½öÓÃÀ´°ïÖúÀí½â£¬²»ÒªÕæµÄÇáÐÅ)£¬µ±¶¥²ãµÄɳºÐ²ã´ò¿ªÎļþʱ£¬ Ï൱ÓÚ´ò¿ªÒ»¸ö·ûºÅÁ´½Ó£¬¶ø³¢ÊÔÐÞ¸Äʱ£¬ÔòCOW£¨Copy on write£©¡£µ½µ×²ÉÓÃʲôµ×²ãÎļþϵͳ¼¼Êõ£¬ÈçºÎʵÏÖ¶à¸öÈÝÆ÷²¢·¢·ÃÎÊÖ» ¶ÁLayerÎļþµÄÐÔÄÜ£¬ÈçºÎcacheµÈ£¬Ä¿Ç°Ò»¸Å²»ÖªµÀ¡£sorry£¡

6. Windows DockerµÄÎļþϵͳ¸ôÀë

ǰ¶Îʱ¼äµÄÈÈÃÅ»°Ì⣬³ýÁË¹ÉÆ±£¬¾ÍÒªËãÊÇijÔÚÏßÂÃÓÎÉ̵ı¯¾çÁË£¬·»¼äÉõÖÁ´«ÎÅÆäΪÊý¾ÝÎóɾ£¡£¡£¡

Óпͻ§Ôø¾­Îʵ½£ºDockerÄÜ·ñ±ÜÃâÕâÖÖ±¯¾ç£¿ÆäʵDockerºÍÐéÄâ»úÒ»Ñù£¬¶¼Ìæ´ú²»ÁËÈÝÔֺͱ¸·ÝµÄ»úÖÆ¡£²»¹ýDockerȷʵÓÐÎļþϵͳ¸ôÀë µÄÄÜÁ¦¡£ÎÒÔÚBuild´ó»áÀï¿´µ½£¬ÑÝʾÕßÔÚWindows ContainerÀïÖ´ÐÐɾ³ýCÅ̸ùĿ¼ÏÂËùÓÐÎļþºÍ×¢²á±í¼üÖµ£¬¾¡¹ÜÕâ¸öÈÝÆ÷±»»ÙÁË £¬µ«ÊǸù±¾²»»áÓ°ÏìÆäËûÈÝÆ÷£¬¸ü²»»áÓ°ÏìÖ÷»ú£¬ÕâºÍlinux DockerÒ»Ñù¡£¿´Í¼Æ¬°É¡£

7. IPC¸ôÀë»úÖÆ

ÔÚÁíһλËïÀÏʦ£¬Ëィ²¨ÀÏʦµÄÎÄÕÂÀïÎÒÃÇ¿´µ½£¬linux Docker²ÉÓÃÁËIPC¸ôÀë»úÖÆ¡£¶øWindows DockerÒ²²ÉÓÃÀàËÆµÄ¸ôÀë»úÖÆ¡£Õâ¸ö»úÖÆ¾ÍÊÇËùνµÄ»á»°¸ôÀë¡£

ÄÇôWindowsÀÄÄЩ¼¼Êõ»áÓõ½»á»°¸ôÀëÄØ£¬ÅèÅè¼òµ¥×ܽáһϣº

Ê×ÏÈÊÇÖÕ¶Ë·þÎñ£¬»á»°¾ÍÊÇΪÁËÕâ¸ö¼¼Êõ¶ø·¢Ã÷µÄ¡£

¿ìËÙÓû§Çл»£¬ÕâºÍÖÕ¶Ë·þÎñʵ¼ÊÉÏÊÇÒ»Ñù£¬Ö»²»¹ý¿ìËÙÓû§Çл»Ö»»áÌṩ×îеǼÓû§µÄ×ÀÃæ£¨shell£©¡£

´ÓWindows Vista¿ªÊ¼£¬ÏµÍ³¼¶½ø³ÌºÍ·þÎñ£¬ÔËÐÐÔڻỰ0ÀÕâ¾ÍÊÇΪʲôÎÒÃÇÎÞ·¨ÔÙÓÃ"mstsc /console"ÃüÁîÀ´µÇ¼µ½·þÎñÆ÷µÄ¿ØÖÆÌ¨»á»°¡£

´ÓWindows 8¿ªÊ¼£¬Metro Application£¨Æ½°åרÓõÄÓ¦Óã©£¬Ò²²ÉÓûỰ¸ôÀë¼¼Êõ¡£

Ò²¾ÍÊÇ˵£¬»á»°ÊÇΪÁËÖÕ¶Ë·þÎñÕâÖÖ¶àÓû§»úÖÆÀ´×¼±¸µÄ¡£

ÓÃSysinternals Suite¹¤¾ß°üÀïµÄWinobjÕâ¸öС¹¤¾ß£¬¿ÉÒÔ¿´µ½»á»°¸ôÀëµÄЧ¹û¡£

ÔÚͼÖпÉÒÔ¿´µ½£¬²»Í¬»á»°ÀïÓµÓв»Í¬µÄ¶ÔÏóÃüÃû¿Õ¼ä£¬ÀýÈ粻ͬÈÝÆ÷£¬ÓÐ×Ô¼º¶ÀÁ¢µÄ´°¿ÚÕ¾(ÖÕ¶Ë·þÎñ£¬ÆäËû³¡ºÏÖ»Óе±Ç°µÇ¼Óà »§²ÅÓÐWinsta´°¿ÚÕ¾)£¬BaseNamedObjectsĿ¼£¬°üº¬Ê¼þ¡¢»¥³âÐźźÍÄÚ´æ¶ÎµÈ¶ÔÏó¡£²»Í¬»á»°ÀïµÄÓ¦Ó㬲»Äܹ»·¢ËÍ´°¿ÚÏûÏ¢£¨Window Message£¬ÒÔ·ÀÖ¹·ÛËé¹¥»÷£©¡£

Windows DockerÑØÓÃÁ˻Ự¸ôÀë¼¼Êõ£¬²»Í¬ÈÝÆ÷ÔÚͬһ¸öWindowsÖ÷»úÉÏ·ÃÎÊͬһ¸öÃüÃû¶ÔÏ󣬾Ͳ»»áµ¼Ö³åÍ»¡£

ÔÚBuild´ó»áµÄÑÝʾÀÆô¶¯ÁË2¸öÈÝÆ÷£¬¶¼ÊÇ´Óͬһ¸öWindows Server CoreÓ³ÏñÀï´´½¨³öÀ´¡£ÔÚÆäÖÐÒ»¸öÈÝÆ÷ÀïÔËÐÐtasklistÃüÁ ÏÔʾµ±Ç°µÄ½ø³ÌÐÅÏ¢£¬°üÀ¨»á»°¡£

ÔÚÕâ¸ö½ØÍ¼ÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½¸ÃÈÝÆ÷ÔËÐÐÔڻỰ14Àï¡£

ÔÚÁíÍâÒ»¸öÈÝÆ÷ÀïͬÑùÔËÐÐtasklist¡£¿ÉÒÔ¿´µ½¸ÃÈÝÆ÷ÔËÐÐÔڻỰ15Àï¡£

ÀàËÆÓÚÁ½¸öÈÝÆ÷£¬·Ö±ðͨ¹ýÔ¶³Ì×ÀÃæ·ÃÎÊÒ»Ñù£¬Äõ½²»Í¬µÄ»á»°£¨session£©£¬´Ó¶ø»ñµÃnamespace¸ôÀëÄÜÁ¦¡£

´ÓÁ½¸ö½ØÍ¼ÀïÄÜ¿´µ½Ê²Ã´£¿ÆäÖÐSystemºÍ¿ÕÏнø³ÌÊǹ²ÏíµÄ£¬Õâ˵Ã÷DockerÊǹ²ÏíËÞÖ÷»úµÄÄںˡ£µ±È»½ø³ÌºÅ¶¼Ò»Ñù²»´ú±íʲô£¬Òò ΪËùÓÐWindowsÀÕâÁ½¸ö½ø³ÌµÄPID¶¼Ò»Ñù£¡¶øÃ¿¸öÈÝÆ÷¶¼ÓÐ×Ô¼ºµÄsvchost½ø³Ì¡¢csrss½ø³ÌºÍwininit½ø³ÌµÈ¡£ÕâЩ½ø³Ì¶¼ÊÇ per-sessionµÄ¡£

8. Windows DockerÄÜÏÔʾͼÐλ¯½çÃæÂð£¿

´«Í³µÄWindowsÓ¦Óôó¶àÊÇÓÐGUIµÄ£¬ËùÒÔÕâЩӦÓÿÉÄÜÐèҪͨ¹ýͼÐλ¯·½Ê½½øÐÐÔ¶³Ì²Ù¿Ø¡£Windows Docker»áͨ¹ýÈÝÆ÷µÄRDP·þÎñÁ¬ ½ÓÉÏÀ´¡£

ͼÖÐÏÔʾͨ¹ýRDP·þÎñÁ¬½Óµ½Process ExplorerÕâ¸ö´øGUIµÄϵͳ½ø³Ì¹ÜÀí¹¤¾ß¡£ÓÉÓÚRDPʵ¼ÊÉϾÍÊÇÖÕ¶Ë·þÎñ£¬ËùÒÔProcess ExplorerÕâ¸öͼÐλ¯½ø³ÌÏ൱ÓÚÓÖÔËÐÐÔÚÒ»¸öеĻỰÀïÁË£¡Õâ¸ö˵ÆðÀ´ÓеãÞÖ¿Ú¡£

´ÓÕâÕÅͼÀïÎÒÃÇ¿ÉÒÔ¿´³ö£¬ÓÉÓÚProcess ExplorerÊÇÔÚÖն˻ỰÀï´ò¿ªµÄ£¬ËùÒÔÎÒÃÇ¿ÉÒÔÔÚÈÝÆ÷µÄÈÎÎñ¹ÜÀíÆ÷Àï¿´µ½ÓÐÁ½¸ö»á»°£º

1.»á»°14ÊÇDocker×Ô¼ºµÄ»á»°£¬ÔÚÕâÀï³¢ÊÔÆô¶¯Process Exploer£¬µ«ÊÇɶ¶¼¿´²»µ½£¬Õâ¸öÊÇÕý³£µÄ£¬ÒòΪͼÐλ¯½çÃæÎÞ·¨ÔÚDocker¿Í»§¶Ë ÀïÏÔʾ£¬LinuxÒ²²ÉÓÃÀàËÆVNC/RDPµÈ°ì·¨¿ª×¨ÃŵÄͨµÀ·ÃÎÊ¡£

2.¶ø»á»°15ÔòÊÇͨ¹ýRDP·ÃÎʵĻỰ

9. ´´½¨Windows Docker

ºÍlinux Docker£¬Windows Docker£¨¼ÇסÓÐÁ½¸ö²úÆ·£¬Windows server containerºÍhyper-v container£©Íêȫ֧³Ölinux DockerµÄ½Ó¿ÚºÍ¹¤¾ß¼¯¡£¾ÍºÃ±ÈµçÊÓ»úºÍͶӰÒÇ£¬ÆäÄÚ²¿ÊµÏÖ¹ÌÈ»´óÏྶͥ£¬È»ÆäºÍµçÄÔµÄÖ®¼äµÄ½Ó¿ÚÔò¼¸ºõÍêȫһÖ¡£

´´½¨Windows ÈÝÆ÷£¬ºÍlinuxÒ»Ñù£¬ÓÐDocker file£¬Ö±½ÓDocker build£¬Éú³ÉImage¡£

Docker FileµÄ¼òµ¥·¶Àý£º

From Windowsservercore
WORKDIR \
COPY bin\Debug\ \Deapp
CMD \DemoApp\Demoapp.exe

½ñºó΢ÈíµÄWindows azureÔÆ£¬¿ÉÒÔÖ±½ÓÖ§³ÖDocker£¬²»¹ÜÊÇWindows»¹ÊÇlinux£¬¶¼¿ÉÒÔÖ±½ÓÓÃ×îеÄvisual studio°Ñ´úÂëÇ©µ½azureµÄlinux»òÕßWindowsÈÝÆ÷Àï¡£µ±È»Ò²¿ÉÒÔÖ±½ÓÓÃazureµÄvisual studio online·þÎñ¡£

10. Windows Docker²»Í¬°æ±¾£¬ÒÔ¼°linuxÖ®¼äÒìͬ

Ê×ÏÈ·ÖÏíÁéÈ¸ÔÆÀÏ´ó×ó«hÀÏʦµÄPPT¡£

¿ÉÒÔ¿´µ½sessionºÍJO£¬ÊÇWindows DockerµÄ¸ôÀë¼¼Êõ£¬Í¬Ê±JO¼¼ÊõÀàËÆÓÚlinuxÀïµÄCGroup¡£¿ÉÒԲο¼chromeµÄÏà¹Ø¼¼Êõ¡£chrome¾ÍÊÇÓõ½Á˲»ÉÙWindowsµÄ¸ôÀë¼¼Êõ¡£

ÔÙ¿´Ò»ÕÅͼƬ¡£

´ÓÕâÀï¿ÉÒÔ¿´³öWindows Docker²»Í¬°æ±¾ºÍlinuxÖ®¼äµÄÒìͬµã¡£ÆäÖÐHyper-V ContainerµÄ°²È«ÄÜÁ¦¸ßÓÚWindows Server Container¡£

Windows Server ContainerºÍHyper-V ContainerÖ®¼äµÄ²îÒ죬¿ÉÒԲο¼Õâ¸öͼƬ¡£×î´óµÄ²î±ðÔÚÓÚ£¬hyper-v containerÖ§³Ö¶à×â»§°²È«ÄÜÁ¦£¬Í¬Ê±Ö§³Ö¼ÓÓò¡£¶øWindows server containerÔò²»ÄܼÓÓò£¬ÕâÒâζ×ÅÈç¹ûÕâ¸öÓ¦ÓÃÐèÒª¼ÓÓòµÄ»°£¬ÔòÎÞ·¨ÓÃWindows Server Container¡£

   
2765 ´Îä¯ÀÀ       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 ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ