±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬Ö÷Òª½²½âÁËDockerµÄ»ù´¡×é³É¼°Ïà¹ØµÄÔÀí¡£ |
|
ǰÌá
dockerÊÇlinuxϵͳÉϵģ¬ËäÈ»¹ÙÍøÌṩÁËwindowsºÍMacOS°æ±¾µÄ°²×°°ü£¬µ«ËüÃǶ¼ÊÇ¿¿ÐéÄâ»ú»òÀàËÆµÄ¼¼ÊõÖ§³ÅµÄ¡£»»¾ä»°Ëµ£¬ÎªÁË·½±ãÄãµÄÔĶÁ£¬Ï£ÍûÄãÒѾÁ˽âЩÐílinuxµÄ֪ʶ¡£
¹²Ê¶
DockerʹÓÿͻ§¶Ë-·þÎñÆ÷(client-server)¼Ü¹¹Ä£Ê½¡£Docker¿Í»§¶Ë»áÓëDockerÊØ»¤½ø³Ì½øÐÐͨÐÅ¡£DockerÊØ»¤½ø³Ì»á´¦Àí¸´ÔÓ·±ÖصÄÈÎÎñ£¬ÀýÈ罨Á¢¡¢ÔËÐС¢·¢²¼ÄãµÄDockerÈÝÆ÷¡£Docker¿Í»§¶ËºÍÊØ»¤½ø³Ì¿ÉÒÔÔËÐÐÔÚͬһ¸öϵͳÉÏ£¬µ±È»ÄãÒ²¿ÉÒÔʹÓÃDocker¿Í»§¶ËÈ¥Á¬½ÓÒ»¸öÔ¶³ÌµÄDockerÊØ»¤½ø³Ì¡£Docker¿Í»§¶ËºÍÊØ»¤½ø³ÌÖ®¼äͨ¹ýsocket»òÕßRESTful
API½øÐÐͨÐÅ¡£
DockerºÍÈÝÆ÷²»ÊÇÒ»¸öÒâ˼£¬docker°üº¬ÊµÏÖÐéÄ⻯¼¼ÊõµÄһϵÁм¼Êõ£¬¶øÈÝÆ÷£¨container£©Ö»ÊÇÆäÖеÄÒ»¸ö×é¼þ¡£
DockerÓ¦Óó¡¾°
¸ü¿ì½»¸¶ÄãµÄÓ¦ÓóÌÐò
Docker¿ÉÒÔΪÄãµÄ¿ª·¢¹ý³ÌÌṩÍêÃÀµÄ°ïÖú¡£DockerÔÊÐí¿ª·¢ÕßÔÚ±¾µØ°üº¬ÁËÓ¦ÓóÌÐòºÍ·þÎñµÄÈÝÆ÷½øÐпª·¢£¬Ö®ºó¿ÉÒÔ¼¯³Éµ½Á¬ÐøµÄÒ»Ì廯ºÍ²¿Êð¹¤×÷Á÷ÖС£
¿ª·¢ºÍÍØÕ¹¸ü¼Ó¼òµ¥
DockerµÄÒÔÈÝÆ÷Ϊ»ù´¡µÄƽ̨ÔÊÐí¸ß¶È¿ÉÒÆÖ²µÄ¹¤×÷¡£DockerÈÝÆ÷¿ÉÒÔÔÚ¿ª·¢Õß»úÆ÷ÉÏÔËÐУ¬Ò²¿ÉÒÔÔÚʵÌå»òÕßÐéÄâ»úÉÏÔËÐУ¬Ò²¿ÉÒÔÔÚÔÆÆ½Ì¨ÉÏÔËÐС£
DockerµÄ¿ÉÒÆÖ²¡¢ÇáÁ¿ÌØÐÔͬÑùÈö¯Ì¬µØ¹ÜÀí¸ºÔØ¸ü¼Ó¼òµ¥¡£Äã¿ÉÒÔÓÃDocker¿ìËÙµØÔö¼ÓÓ¦ÓùæÄ£»òÕ߹رÕÓ¦ÓóÌÐòºÍ·þÎñ¡£DockerµÄ¿ìËÙÒâζ×ű䶯¼¸ºõÊÇʵʱµÄ¡£
ʵÏÖ¸ü¸ßÃܶȺ͸ü¶àµÄ¸ºÔØ
DockerÇáÇÉ¿ìËÙ£¬ËüÌṩÁËÒ»¸ö¿ÉÐеġ¢ ·ûºÏ³É±¾Ð§ÒæµÄÌæ´ú»ùÓÚÐéÄâ»ú¹ÜÀí³ÌÐòµÄÐéÄâ»ú¡£ÕâÔÚ¸ßÃܶȵĻ·¾³ÏÂÓÈÆäÓÐÓá£ÀýÈ磬¹¹½¨Äã×Ô¼ºµÄÔÆÆ½Ì¨»òÕßPaaS£¬ÔÚÖÐСµÄ²¿Êð»·¾³ÏÂͬÑù¿ÉÒÔ»ñÈ¡µ½¸ü¶àµÄ×ÊÔ´ÐÔÄÜ¡£
Ä¿±ê
DockerÏîÄ¿µÄÄ¿±êÊÇʵÏÖÇáÁ¿¼¶µÄ²Ù×÷ϵͳÐéÄ⻯½â¾ö·½°¸£¬´´½¨Èí¼þ³ÌÐò¿ÉÒÆÖ²µÄÇáÁ¿ÈÝÆ÷¡£
DockerµÄÖ÷Òª×é³É
DockerÓÐÁ½¸öÖ÷ÒªµÄ²¿¼þ£º
Docker: ¿ªÔ´µÄÈÝÆ÷ÐéÄ⻯ƽ̨¡£
Docker Hub: ÓÃÓÚ·ÖÏí¡¢¹ÜÀíDockerÈÝÆ÷µÄDocker SaaSƽ̨¡£ |
µ×²ãʵÏÖ
Docker µÄ»ù´¡ÊÇLinuxÈÝÆ÷£¨LXC£©µÈ¼¼Êõ¡£
ÔÚLXCµÄ»ù´¡ÉÏDocker½øÐÐÁ˽øÒ»²½µÄ·â×°£¬ÈÃÓû§²»ÐèҪȥ¹ØÐÄÈÝÆ÷µÄ¹ÜÀí£¬Ê¹µÃ²Ù×÷¸üΪ¼ò±ã¡£
DockerʹÓÃCgroupsÀ´ÌṩÈÝÆ÷¸ôÀ룬¶øunionÎļþϵͳÓÃÓÚ±£´æ¾µÏñ²¢Ê¹ÈÝÆ÷±äµÃ¶ÌÔÝ¡£
Cgroups£ºCgroupsÊÇLinuxÄں˹¦ÄÜ£¬ËüÈÃÁ½¼þÊÂÇé±ä³É¿ÉÄÜ£ºÏÞÖÆLinux½ø³Ì×éµÄ×ÊÔ´Õ¼Óã¨ÄÚ´æ¡¢CPU£©£»Îª½ø³Ì×éÖÆ×÷
PID¡¢UTS¡¢IPC¡¢ÍøÂç¡¢Óû§¼°×°ÔØÃüÃû¿Õ¼ä¡£
Docker Cgroups: http://www.infoq.com/cn/articles/docker-kernel-knowledge-cgroups-resource-isolation
UnionÎļþϵͳ£ºÔÚunionÎļþϵͳÀÎļþϵͳ¿ÉÒÔ±»×°ÔØÔÚÆäËûÎļþϵͳ֮ÉÏ£¬Æä½á¹û¾ÍÊÇÒ»¸ö·Ö²ãµÄ»ýÀ۱仯¡£ÈçÏÂͼ£º

ÓëÐéÄâ»úµÄ¹ØÏµ
Óû§²Ù×÷DockerµÄÈÝÆ÷¾ÍÏñ²Ù×÷Ò»¸ö¿ìËÙÇáÁ¿¼¶µÄÐéÄâ»úÒ»Ñù¼òµ¥¡£
µ«ÊÇËüÃÇ»¹ÊÇÓкܴóµÄÇø±ðµÄ£¬¿´ÏÂÃæÁ½·ùͼ£º


¹ÙÍøµÄ˵·¨ÊÇ£ºÐéÄâ»úÉϵÄÓ¦Óò»½ö°üº¬ÁËÓ¦Óñ¾Éí¡¢±ØÒªµÄÒÀÀµ£¨¶þ½øÖƺͿâ°üµÈ£©£¬»¹°üÀ¨Õû¸ö²Ù×÷ϵͳ£»¶ødockerÓ¦Óò»Í¬£¬¹²ÏíϵͳÄںˣ¬½ö½ö°üº¬Ó¦Óñ¾ÉíºÍÒÀÀµ¡£
DockerµÄÓÅÊÆ£º

DockerµÄÌØÐÔ
½»»¥Ê½Shell£ºDocker¿ÉÒÔ·ÖÅäÒ»¸öÐéÄâÖն˲¢¹ØÁªµ½ÈκÎÈÝÆ÷µÄ±ê×¼ÊäÈëÉÏ£¬ÀýÈçÔËÐÐÒ»¸öÒ»´ÎÐÔ½»»¥shell¡£
Îļþϵͳ¸ôÀ룺ÿ¸ö½ø³ÌÈÝÆ÷ÔËÐÐÔÚÍêÈ«¶ÀÁ¢µÄ¸ùÎļþϵͳÀï¡£
дʱ¸´ÖÆ£º²ÉÓÃдʱ¸´ÖÆ·½Ê½´´½¨¸ùÎļþϵͳ£¬ÕâÈò¿Êð±äµÃ¼«Æä¿ì½Ý£¬²¢ÇÒ½ÚÊ¡ÄÚ´æºÍÓ²Å̿ռ䡣
×ÊÔ´¸ôÀ룺¿ÉÒÔʹÓÃcgroupΪÿ¸ö½ø³ÌÈÝÆ÷·ÖÅ䲻ͬµÄϵͳ×ÊÔ´¡£
ÍøÂç¸ôÀ룺ÿ¸ö½ø³ÌÈÝÆ÷ÔËÐÐÔÚ×Ô¼ºµÄÍøÂçÃüÃû¿Õ¼äÀӵÓÐ×Ô¼ºµÄÐéÄâ½Ó¿ÚºÍIPµØÖ·¡£
ÈÕÖ¾¼Ç¼£ºDocker½«»áÊÕ¼¯ºÍ¼Ç¼ÿ¸ö½ø³ÌÈÝÆ÷µÄ±ê×¼Á÷£¨stdout/stderr/stdin£©£¬ÓÃÓÚʵʱ¼ìË÷»òÅúÁ¿¼ìË÷¡£
±ä¸ü¹ÜÀí£ºÈÝÆ÷ÎļþϵͳµÄ±ä¸ü¿ÉÒÔÌá½»µ½ÐµÄÓ³ÏñÖУ¬²¢¿ÉÖØ¸´Ê¹ÓÃÒÔ´´½¨¸ü¶àµÄÈÝÆ÷¡£ÎÞÐèʹÓÃÄ£°å»òÊÖ¶¯ÅäÖá£
Docker½á¹¹ÒýÇæ

×¢ÒâÉÏͼ£¬ÏÔʾµÄÊÇdockerÖ÷Òª×é¼þ¡£
1. Server£¬¾ÍÊÇÒ»¸öÊØ»¤½ø³Ì£¬Ëü»áÒ»Ö±ÔËÐÐÔÚºǫ́£»
2. REST API£¬ËµÃ÷ÈçºÎÓëserver½»»¥ºÍָʾËüÖ´ÐÐÃüÁ
3. Client£¬Êǿͻ§ÊéдָÁîµÄµØ·½£¬Ò²Ë׳Æshell£¬¿´ÏÂͼ£º

DockerÔËÐÐÁ÷³Ì

ÕýÈçÉÏͼËùʾ£¬µ±ÎÒÃÇÏëÔËÐÐÒ»¸öÈÝÆ÷µÄʱºò£¬docker»á£º
ÀÈ¡¾µÏñ£¬Èô±¾µØÒѾ´æÔڸþµÏñ£¬Ôò²»Óõ½ÍøÉÏÈ¥ÀÈ¡¡£
´´½¨ÐµÄÈÝÆ÷¡£
·ÖÅäunionÎļþϵͳ²¢ÇÒ¹Ò×ÅÒ»¸ö¿É¶ÁдµÄ²ã£¬ÈκÎÐÞ¸ÄÈÝÆ÷µÄ²Ù×÷¶¼»á±»¼Ç¼ÔÚÕâ¸ö¶Áд²ãÉÏ£¬Äã¿ÉÒÔ±£´æÕâЩÐ޸ijÉеľµÏñ£¬Ò²¿ÉÒÔÑ¡Ôñ²»±£´æ£¬ÄÇôÏ´ÎÔËÐиľµÏñµÄʱºòËùÓÐÐ޸IJÙ×÷¶¼»á±»Ïû³ý¡£
·ÖÅäÍøÂç\ÇŽӽӿڣ¬´´½¨Ò»¸öÔÊÐíÈÝÆ÷Óë±¾µØÖ÷»úͨÐŵÄÍøÂç½Ó¿Ú¡£
ÉèÖÃipµØÖ·£¬´Ó³ØÖÐѰÕÒÒ»¸ö¿ÉÓõÄipµØÖ·¸½¼Óµ½ÈÝÆ÷ÉÏ£¬»»¾ä»°Ëµ£¬localhost²¢²»ÄÜ·ÃÎʵ½ÈÝÆ÷¡£
ÔËÐÐÄãÖ¸¶¨µÄ³ÌÐò¡£
²¶»ñ²¢ÇÒÌṩӦÓÃÊä³ö£¬°üÀ¨ÊäÈë¡¢Êä³ö¡¢±¨´íÐÅÏ¢¡£ |