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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Docker--image·ÖÎö
 
  2992  次浏览      27
 2018-4-13 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬Ö÷ҪΪ´ó¼Ò½²½âÁËdocker imageµÄÒâÒ壬docker image´æ´¢Î»ÖÃÒÔ¼°´¢´æÐÎʽ¡£

docker imageÊÇʲô£¬´æ´¢ÔÚʲôλÖá£

±¾ÎĻشðÁ½¸öÎÊÌ⣺

1. docker imageÊÇʲô¡£

2. docker image´æ´¢ÔÚÄÄÀÒÔʲôÐÎʽ´æ´¢¡£

1. docker imageÊÇʲô

image ÀïÃæÊÇÒ»²ã²ãÎļþϵͳ£¬½Ð×ö Union FS£¨ÁªºÏÎļþϵͳ£©¡£ÁªºÏÎļþϵͳ£¬¿ÉÒÔ½«¼¸²ãĿ¼¹ÒÔØµ½Ò»Æð£¬ÐγÉÒ»¸öÐéÄâÎļþϵͳ¡£ÐéÄâÎļþϵͳµÄĿ¼½á¹¹¾ÍÏñÆÕͨ linux µÄĿ¼½á¹¹Ò»Ñù£¬docker ͨ¹ýÕâЩÎļþÔÙ¼ÓÉÏËÞÖ÷»úµÄÄÚºËÌṩÁËÒ»¸ö linux µÄÐéÄâ»·¾³¡£Ã¿Ò»²ãÎļþϵͳÎÒÃǽÐ×öÒ»²ã layer£¬ÁªºÏÎļþϵͳ¿ÉÒÔ¶Ôÿһ²ãÎļþϵͳÉèÖÃÈýÖÖȨÏÞ£¬Ö»¶Á£¨readonly£©¡¢¶Áд£¨readwrite£©ºÍд³ö£¨whiteout-able£©£¬µ«ÊÇ docker ¾µÏñÖÐÿһ²ãÎļþϵͳ¶¼ÊÇÖ»¶ÁµÄ¡£

¹¹½¨¾µÏñµÄʱºò£¬´ÓÒ»¸ö×î»ù±¾µÄ²Ù×÷ϵͳ¿ªÊ¼£¬Ã¿¸ö¹¹½¨µÄ²Ù×÷¶¼Ï൱ÓÚ×öÒ»²ãµÄÐ޸ģ¬Ôö¼ÓÁËÒ»²ãÎļþϵͳ¡£Ò»²ã²ãÍùÉϵþ¼Ó£¬ÉϲãµÄÐ޸ĻḲ¸Çµ×²ã¸ÃλÖõĿɼûÐÔ£¬ÕâÒ²ºÜÈÝÒ×Àí½â£¬¾ÍÏñÉϲã°Ñµ×²ãÕÚסÁËÒ»Ñù¡£µ±ÄãʹÓõÄʱºò£¬ÄãÖ»»á¿´µ½Ò»¸öÍêÈ«µÄÕûÌ壬Äã²»ÖªµÀÀïÃæÓм¸²ã£¬Ò²²»Çå³þÿһ²ãËù×öµÄÐÞ¸ÄÊÇʲô¡£½á¹¹ÀàËÆÕâÑù£º

´Ó»ù±¾µÄ¿´Æð£¬Ò»¸öµäÐ굀 Linux ÎļþϵͳÓÉ bootfs ºÍ rootfs Á½²¿·Ö×é³É£¬bootfs(boot file system) Ö÷Òª°üº¬bootloader ºÍ kernel£¬bootloader Ö÷ÒªÓÃÓÚÒýµ¼¼ÓÔØ kernel£¬µ± kernel ±»¼ÓÔØµ½ÄÚ´æÖкó bootfs »á±» umount µô¡£rootfs (root file system) °üº¬µÄ¾ÍÊǵäÐÍ Linux ϵͳÖеÄ/dev£¬/proc£¬/bin£¬/etc µÈ±ê׼Ŀ¼ºÍÎļþ¡£ÏÂͼ¾ÍÊÇ docker image ÖÐ×î»ù´¡µÄÁ½²ã½á¹¹£¬²»Í¬µÄ linux ·¢Ðа棨Èç ubuntu ºÍ CentOS ) ÔÚ rootfs ÕâÒ»²ã»áÓÐËùÇø±ð£¬ÌåÏÖ·¢Ðа汾µÄ²îÒìÐÔ¡£

´«Í³µÄ Linux ¼ÓÔØ bootfs ʱ»áÏȽ« rootfs ÉèΪ read-only£¬È»ºóÔÚϵͳ×Ô¼ìÖ®ºó½« rootfs ´Ó read-only ¸ÄΪ read-write£¬È»ºóÎÒÃǾͿÉÒÔÔÚ rootfs ÉϽøÐжÁд²Ù×÷ÁË¡£µ« Docker ÔÚ bootfs ×Ô¼ìÍê±ÏÖ®ºó²¢²»»á°Ñ rootfs µÄ read-only ¸ÄΪ read-write£¬¶øÊÇÀûÓà union mount£¨UnionFS µÄÒ»ÖÖ¹ÒÔØ»úÖÆ£©½« image ÖÐµÄÆäËûµÄ layer ¼ÓÔØµ½Ö®Ç°µÄ read-only µÄ rootfs²ãÖ®ÉÏ£¬Ã¿Ò»²ã layer ¶¼ÊÇ rootfs µÄ½á¹¹£¬²¢ÇÒÊÇread-only µÄ¡£ËùÒÔ£¬ÎÒÃÇÊÇÎÞ·¨ÐÞ¸ÄÒ»¸öÒÑÓоµÏñÀïÃæµÄ layer µÄ£¡Ö»Óе±ÎÒÃÇ´´½¨Ò»¸öÈÝÆ÷£¬Ò²¾ÍÊǽ« Docker ¾µÏñ½øÐÐʵÀý»¯£¬ÏµÍ³»á·ÖÅäÒ»²ã¿ÕµÄ read-write µÄ rootfs £¬ÓÃÓÚ±£´æÎÒÃÇ×öµÄÐ޸ġ£Ò»²ã layer Ëù±£´æµÄÐÞ¸ÄÊÇÔöÁ¿Ê½µÄ£¬¾ÍÏñ git Ò»Ñù¡£

×ÛÉÏ£¬imageÆäʵ¾ÍÊÇÒ»¸öÎļþϵͳ£¬ËüÓëËÞÖ÷»úµÄÄÚºËÒ»ÆðΪ³ÌÐòÌṩһ¸öÐéÄâµÄlinux»·¾³¡£ÔÚÆô¶¯docker containerʱ£¬ÒÀ¾Ýimage£¬docker»áΪcontainer¹¹½¨³öÒ»¸öÐéÄâµÄlinux»·¾³¡£

2. docker image´æ´¢ÔÚÄÄÀÒÔʲôÐÎʽ´æ´¢¡£

µ±ÔËÐÐsudo docker pull ubuntuÃüÁ´ÓDocker HUBÉÏÏÂÔØÒ»¸öubuntu imageºó£¬Õâ¸öimage´æ´¢ÔÚËÞÖ÷»úµÄʲôλÖã¬ÒÔʲôÐÎʽ´æ´¢µÄÄØ¡£ÏÂÃæÎÒÃÇÒ»²½²½À´½Ò¿ªÕâ¸ö´ð°¸¡£

DockerĿǰ֧³ÖÎåÖÖ¾µÏñ²ã´ÎµÄ´æ´¢driver£ºaufs¡¢device mapper¡¢btrfs¡¢vfs¡¢overlay¡£ÏÂÃæÒÔaufs×ö½éÉÜ£¬Õâ¸öÒ²ÊÇÎÒÃÇϵͳÉÏÓõġ£

ÏÂÔØÒ»¸öubuntu image£¬ÐÞ¸ÄtagΪxuzw£¬É¾³ýÆäËûËùÓоµÏñ¡£

ÔÚ°²×°dockerʱ£¬Ä¬ÈϵݲװλÖÃÊÇ/var/lib/docker¡£ÈÃÎÒÃÇ¿´¿´Õâ¸öĿ¼ÏÂÃæ¶¼ÓÐʲô¡£

repositories-aufs£º¼Ç¼Á˾µÏñÃû³ÆÒÔ¼°¶ÔÓ¦µÄIdµÄjsonÎļþ£¬

graph£º±£´æµÄÊÇÏÂÔØ¾µÏñµÄÔªÊý¾Ý£¬°üÀ¨jsonºÍlayersize£¬ÆäÖÐjsonÎļþ¼Ç¼ÁËÏàÓ¦µÄimage id¡¢ÒÀÀµ¹ØÏµ¡¢´´½¨Ê±¼äºÍÅäÖÃÐÅÏ¢µÈ¡£layersizeΪ¶ÔÓ¦²ãµÄ´óС¡£½øÈëgraphÎļþ»á·¢ÏÖÏÂÃæ°üº¬×Ŷà¸öÎļþ¼Ð£¬ÆäÖÐÓÐÒ»¸öÊÇÒÔÎÒÃÇÏÂÔØµÄ¾µÏñÃüÃûµÄÎļþ¼Ðca4¡­¡­£¬½øÈëÕâ¸öÎļþ¼Ð£¬¿ÉÒÔ¿´µ½jsonºÍlayersizeÎļþ¡£

jsonÎļþÄÚÈݲ¿·Ö½ØÍ¼ÈçÏ£¬layersizeÏÔʾΪ0¡£Ôõô»áΪ0ÄØ£¬²»ÓÃ׿±£¬ÕâÒ»²ãΪ0£¬²»±íʾ¾µÏñ´óС¾ÍÊÇ0¡£Graph´æ´¢¾µÏñʱ£¬ÊÇ·Ö²ã´æ´¢µÄ£¬graphĿ¼Ï¶à³öµÄÎļþ¼ÐÆäʵ¶¼¶ÔÓ¦Ò»¸ölayer¡£ÕâЩlayer¶¼ÓëÎÒÃǵľµÏñÃûÃüÃûµÄlayerÓйØÁª£¬¹ØÏµ¾Í¼Ç¼ÔÚjsonÎļþÖС£

´ÓÕâ¸öjsonÎļþÖУ¬¿ÉÒÔ¿´µ½Æð¸¸¾µÏñ»òÕßÉÏÒ»²ã¾µÏñ¾ÍÊÇa46¡­¡­£¬graphĿ¼ÏÂÒ²´æ´¢×ÅÕâÒ»²ãµÄÐÅÏ¢¡£ÔÙÍùÏ¿´£¬¿ÉÒÔ¿´µ½²ã´Î¹ØÏµÊÇ£ºca4--> a46--> ea3- -> 233¡£

ÔÚgraphÕâ¸öĿ¼ÀﲢûÓÐÕÒµ½ÎÒÃÇÏëÕÒµ½µÄ¾µÏñÄÚÈÝ´æ·ÅµØ¡£graphĿ¼ÏÂÖ»ÊÇһЩ¾µÏñÏà¹ØµÄÐÅÏ¢Êý¾Ý¡£ÓÉÉÏÒ»½ÚÎÒÃÇÒѾ­ÖªµÀ£¬imageÓ¦¸Ã°üº¬Ò»¸öÀàËÆlinuxµÄÎļþϵͳ²Å¶Ô¡£

containers£ºÕâ¸öÏÂÃæ¼Ç¼µÄÊÇÈÝÆ÷Ïà¹ØµÄÐÅÏ¢£¬Ã¿ÔËÐÐÒ»¸öÈÝÆ÷£¬¾ÍÔÚÕâ¸öĿ¼ÏÂÃæÉú³ÉÒ»¸öÈÝÆ÷Id¶ÔÓ¦µÄ×ÓĿ¼£¬ÈçÏÂͼ¡£

init£º±£´æµÄÊÇdocker initÏà¹ØµÄÐÅÏ¢¡£

tmp£ºÊÇÒ»¸ö¿ÕĿ¼£¬¾ßÌåÆðʲô×÷Óû¹²»Çå³þ¡£

volumes£ºÓëdockerµÄÊý¾ÝȯÏà¹Ø£¬Ôڴ˲»½øÐÐÀ©Õ¹¡£

ÏÖÔÚ¾ÍֻʣÏÂaufsÕâ¸öĿ¼ûÓп´ÁË£¬½øÈëaufsÕâ¸öĿ¼¡£

mntÊÇaufsµÄ¹ÒÔØÄ¿Â¼£¬diffÊÇʵ¼ÊÊý¾ÝÀ´Ô´£¬Ò²¾ÍÊÇÎÒÃÇimageʵ¼Ê´æ´¢µÄµØ·½£¬°üÀ¨Ö»¶Á²ãºÍ¿É¶Áд²ã£¬ËùÓÐÕâЩ²ã×îÖÕ¶¼Ò»Æð¹ÒÔØµ½mmtËùÔÚµÄĿ¼¡£layersÏÂΪÿ²ãÒÀÀµÓйصÄÃèÊöÎļþ¡£

ÔÚdiff¡¢mnt¡¢layersÏÂÃæÓÐ6¸öÎļþ»ò×ÓĿ¼£¬µ«ÊÇ´ÓgraphĿ¼Ï¿´ÎÒÃǵÄimageÓ¦¸ÃÊÇ4²ã£¬ÎªÊ²Ã´»á¶à³öÀ´2¸öÄØ¡£×Ðϸ¹Û²ì¶à³öÀ´µÄÀ´¸öÎļþ»òÕß×ÓĿ¼£¬»á·¢ÏÖÆäÃû³ÆºÍÈÝÆ÷IdÒ»Ö£¬ÇÒÓÐÒ»¸ö°üº¬init¡£ÕâÊÇÎªÊ²Ã´ÄØ£¿

Æäʵ£¬ÔÚÈÝÆ÷Æô¶¯Ö®Ç°£¬mntºÍlayers¶¼ÊÇ¿ÕĿ¼£¬diffÏÂÃæÒ²Ö»ÓÐgraphĿ¼ÏÂÎÒÃÇ¿´µ½µÄ¾µÏñ²ã¶ÔÓ¦µÄ4¸öĿ¼¡£

ÔÚDockerÀûÓÃimageÆô¶¯Ò»¸öÈÝÆ÷ʱ£¬»áÔÚaufsÏÂн¨ÈÝÆ÷id¶ÔÓ¦µÄÎļþºÍ×ÓĿ¼£¬Í¬Ê±ÔÚ¾µÏñµÄ¿É¶Á²ãÖ´ÐÐн¨Ò»¸ö¿É¶ÁдµÄlayer¡£ÖÁÓÚid-initÎļþ»òÕß×ÓĿ¼¼Ç¼µÄ¶¼ÊÇÓëÈÝÆ÷ÄÚ»·¾³Ïà¹ØµÄÐÅÏ¢£¬Óë¾µÏñÎ޹ء£

¼ÈÈ»ÎÒÃÇÏÖÔÚÒѾ­ÖªµÀÁ˾µÏñʵ¼ÊÊÇ´æ´¢ÔÚdiffĿ¼Ïµģ¬ÄÇôÎÒÃǾͿ´¿´diffĿ¼Ï¸÷¸ö×ÓĿ¼ÖеÄÄÚÈÝ¡£ÒÀÕÕ¾µÏñµÄ²ã´Î¹ØÏµca4--> a46--> ea3- -> 233²é¿´¡£

×îÖÕÎÒÃÇ¿´µ½linuxÒ»ÑùµÄÎļþϵͳ¡£ÒѱíʾimageȷʵÊÇ´æ´¢ÔÚdiffĿ¼Ïµġ£×ÛÉÏ£¬docker image×îÖÕÊÇ´æ´¢ÔÚÔÚ/var/lib/docker/aufs/diffÖеģ¬Í¬Ê±ÔÚgraphÖÐÓÐÓйؽøÐеļǼ¡£ÔÚÈÝÆ÷Æô¶¯Ê±£¬diffϵĿɶÁ²ãimageºÍÐÂÔöµÄ¿É¶Áд²ã¡°ÈÝÆ÷Id¡±¶¼½«¹ÒÔØµ½mmtĿ¼ÏÂÒÔÈÝÆ÷idÃüÃûµÄ×ÓĿ¼Ï¡£

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

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤