ǰÑÔ
±¾ÎĴ󲿷ÖÄÚÈÝ£¬Õª×Ôdocker¹Ù·½Îĵµ.Understand images, containers,
and storage drivers
ÒëÕßûÓвÉÈ¡ÔÎÄ·ÒëµÄ·½Ê½,¶øÊǽáºÏ×Ô¼ºµÄѧϰ½øÐÐÁ˹éÄÉ×ܽá.
ÒªÏëÕæÕýµÄÀí½âdockerµÄ´æ´¢Çý¶¯£¬ÐèÒªÏÈÁ˽âdocker¾µÏñÊÇÈçºÎ¹¹½¨ºÍ´æ´¢£¬ÒÔ¼°ÈÝÆ÷ÈçºÎʹÓþµÏñ.
¾µÏñÓë·Ö²ã
ÏÂÃæÊÇubuntu:15.04µÄ¾µÏñ·Ö²ã.Ò»¹²ÊÇ£´²ã,ÿһ²ã¶¼ÓÉһЩֻ¶Á²¢ÇÒÃè»æÏµÍ³Çø±ðµÄÎļþ×é³É.

ÉÏÏÂÁ½ÕÅͼ¶Ô±È£¬¿ÉÒÔÇåÎúµÄ¿´µ½¾µÏñ·Ö²ã¹ØÏµ£¨ÉÏͼÊǹٷ½ÎĵµÍ¼Æ¬£¬¿ÉÒÔ¿´µ½¾µÏñ´óС½øÐÐÁ˾«¼ò£¬µ«ÊÇubuntu:15.04¾µÏñµÄ·Ö²ã½á¹¹Ã»±ä£© 
Docker´æ´¢Çý¶¯µÄ×÷ÓþÍÊÇ:½«ÕâЩ·Ö²ãµÄ¾µÏñÎļþ¶ÑµþÆðÀ´£¬²¢ÇÒÌṩͳһµÄÊÓͼ.ʹcontainerµÄÎļþϵͳ¿´ÉÏÈ¥ºÍÎÒÃÇÆÕͨµÄÎļþÏµÍ³Ã»Ê²Ã´Çø±ð.
µ±´´½¨Ò»¸öеÄÈÝÆ÷µÄʱºò,ʵ¼ÊÉÏÊÇÔÚ¾µÏñµÄ·Ö²ãÉÏÐÂÌí¼ÓÁËÒ»²ãcontainer layer£¨ÈÝÆ÷²ã£©.Ö®ºóËùÓжÔÈÝÆ÷²úÉúµÄÐÞ¸Ä,ʵ¼Ê¶¼Ö»Ó°ÏìÕâÒ»²ã. 
×¢Òâ
ÈÝÆ÷²ã£º¶Áд²ã(¿Éд²ã)
¾µÏñ²ã£ºÖ»¶Á²ã
ÈÝÆ÷Óë·Ö²ã
¾µÏñÓëÈÝÆ÷µÄÒ»¸öÖ÷񻂿±ð¾ÍÊÇ£¬ÊÇ·ñ¾ßÓж¥²ãµÄ¶Áд²ã(¿Éд²ã).¶ÔÓÚÒ»¸öÈÝÆ÷µÄÊý¾ÝÐÂÔö£¬Ð޸쬶¼´æ´¢ÔÚ¿Éд²ã.µ±Äãɾ³ýÒ»¸öÈÝÆ÷µÄʱºò£¬¿Éд²ãÒ²½«±»É¾³ý(×¢Òâ:¿Éд²ãÓëÊý¾Ý¾íµÄÇø±ð).È»¶ø¾µÏñ²ãÊDZ£³Ö²»±äµÄ.
ÏÂͼչʾÁË£¬¶à¸öÈÝÆ÷¹²ÏíÒ»¸ö¾µÏñ.¾µÏñ²ãÊÇÖ»¶Á²ã,²»±äµÄ.¶à¸öÈÝÆ÷²ãÔÚͬһ¸ö¾µÏñ²ãÖ®ÉÏ£¬²¢ÇÒÏ໥¶ÀÁ¢£¬»¥Ï಻ӰÏì.

docker ´æ´¢Çý¶¯µÄÖ°Ôð¾ÍÊǽ«¾µÏñ²ãºÍ¿ÉдÈÝÆ÷²ã¹ÜÀíÆðÀ´.²»Í¬µÄÇý¶¯ÊµÏÖ¹ÜÀíµÄ·½Ê½Ò²²»Ò»ÖÂ.ʵÏÖÈÝÆ÷Óë¾µÏñ¹ÜÀíµÄÁ½¸ö¹Ø¼ü¼¼Êõ¾ÍÊǿɶѵþµÄ¾µÏñ²ãºÍcopy-on-write
(CoW£¬Ð´Ê±¸´ÖÆ).
¼òÊöдʱ¸´ÖÆ
¾Ù¸öÀý×Ó£ºÐ¡ÎĺÍСÎäÓɲ»Í¬µÄÀÏʦÉÏÊýѧ¿Î£¬µ«ÊÇËûÃÇÖ»ÓÐÒ»¸öϰÌâ²á.СÎĵÄ×÷ÒµÊÇ£¬Á·Ï°²áµÄµÚʮһҳ.ΪÁ˲»Ó°Ï쵽СÎ䣬СÎĵÄ×ö·¨Êǽ«µÚ11Ò³copy£¬Íê³É×÷ÒµºóÉϽ».Õâ¾ÍÊÇÒ»¸öµäÐ͵Äдʱ¸´ÖÆ
µÚÒ»´ÎÐÞ¸ÄÒ»¸öÎļþ,Õâ¸öÎļþÊ×ÏÈ»á´Ó¸Ã¶Áд²ãÏÂÃæµÄÖ»¶Á²ã¸´ÖƵ½¸Ã¶Áд²ã¡£¸ÃÎļþµÄÖ»¶Á°æ±¾ÒÀÈ»´æÔÚ£¬µ«ÊÇÒѾ±»¶Áд²ãÖеĸÃÎļþ¸±±¾ËùÒþ²Ø¡£
Á˽âÁËдʱ¸´ÖÆ£¬¾ÍÓ¦¸Ã×¢ÒâÒ»¸öÎÊÌ⣺Èç¹ûµÚÒ»´ÎÐ޸ľµÏñ²ãÄÚ°üº¬µÄÎļþ£¬ÎļþµÄsizeºÜ´ó.»áÔì³É´óÁ¿µÄ´ÅÅÌIOµÄ¿ªÏú.ËùÒÔ²»½¨Ò齫ÐèÒªÐ޸ĵĴóÎļþ£¬¼¯³Éµ½¾µÏñÄÚ.¿ÉÒÔ²ÉÓÃÊý¾Ý¾íµÄ·½Ê½.
Êý¾Ý¾íÓë´æ´¢Çý¶¯
µ±Ò»¸öÈÝÆ÷ɾ³ýµÄʱºò,дÈë¸ÃÈÝÆ÷µÄËùÓÐÊý¾Ý½«±»É¾³ý(³ýÁ˱£´æÔÚÊý¾Ý¾íÖеÄÊý¾Ý)
Êý¾Ý¾íÊǹÒÔØµ½ÈÝÆ÷µÄ,dockerËÞÖ÷»úÉϵÄÒ»¸öĿ¼»òÎļþ¡£¶ÔÊý¾Ý¾íµÄÎļþ¶ÁдÊDz»ÊÜ´æ´¢Çý¶¯¿ØÖƵ쬽ӽüÓÚ±¾µØÎļþϵͳ¶ÁдËÙ¶È.¿ÉÒÔ¹ÒÔØ¶à¸öÊý¾Ý¾íµ½Ò»¸öÈÝÆ÷.Ò²¿ÉÒÔ¶à¸öÈÝÆ÷¹²ÏíÒ»¸ö»ò¶à¸öÊý¾Ý¾í.
ÈçͼËùʾ:Ò»¸ödockerËÞÖ÷»úÔËÐУ²¸öÈÝÆ÷¡£Ã¿¸öÈÝÆ÷ÓÐ×Ô¼ºµÄ´æ´¢¿Õ¼ä£¬´æ´¢ÓÚËÞÖ÷»ú±¾µØÎļþϵͳ¡¡/var/lib/docker/¡
ÁíÍâÓÐÒ»¸ö¹²ÏíµÄÊý¾Ý¾íÔÚ /data.¹ÒÔØµ½Á½¸öÈÝÆ÷ÄÚʵÏÖ¹²Ïí. 
ÈçºÎÑ¡Ôñ´æ´¢Çý¶¯
dockerĿǰ֧³ÖµÄ´æ´¢Çý¶¯ÓÐ:OverlayFS,AUFS,Btrfs,Device Mapper,VFS,ZFS¡£
dockerµÄ´æ´¢Çý¶¯Ä¿Ç°²¢Ã»ÓÐÒ»¸öͨÓõģ¬ÍêÃÀµÄ£¬ÊÊÓÃÓÚËùÓл·¾³µÄ´æ´¢Çý¶¯.ËùÒÔÐèÒª¸ù¾Ý×Ô¼ºµÄ»·¾³À´ÓÐËùÑ¡Ôñ.
´æ´¢Çý¶¯ÔÚ²»¶ÏµÄ¸Ä½øÓë·¢Õ¹
Èç¹û´ÓÎȶ¨ÐÔÉϵĿ¼Á¿£¬ÔÚ°²×°dockerµÄʱºò»áĬÈϸù¾ÝÄãµÄϵͳ»·¾³ÅäÖÃÑ¡ÔñÒ»¸ö´æ´¢Çý¶¯.ͨ³£À´ËµÊ¹ÓÃÕâ¸öĬÈϵÄÇý¶¯½«¼õÉÙÄãÓöµ½bugµÄ»ú»á.
Èç¹ûÄãµÄÍŶÓʹÓùýRHEL¼°ÆäÏà¹Ø·ÖÖ§,Äã¿ÉÄÜÓйØÓÚLVMºÍDevice MapperµÄ¾Ñé.Õâʱ½¨ÒéÄãʹÓÃdevicemapper´æ´¢Çý¶¯.
²é¿´µ±Ç°docker ÒýÇæµÄ´æ´¢Çý¶¯
#docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 24 Server Version: 1.10.2 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 52 Dirperm1 Supported: true
|
ÈçͼËùʾ£º´æ´¢Çý¶¯ÀàÐÍΪaufs,ËÞÖ÷»úÎļþϵͳµÄ¸ñʽΪextfs¡£
´æ´¢Çý¶¯ÓëËÞÖ÷»úÎļþ¸ñʽ

ÉèÖÃdockerµÄ´æ´¢Çý¶¯
·½·¨Ò»:ÈçÉèÖô洢Çý¶¯µÄÀàÐÍΪdevicemapper
$ dockerd --storage-driver=devicemapper & |
·½·¨¶þ:ÈçÉèÖô洢Çý¶¯µÄÀàÐÍΪdevicemapper£¬ÔÚDOCKER_OPTSÅäÖòÎÊýµÄ×îºóÃæ¼ÓÉϨCstorage-driver=devicemapper
vim /etc/default/docker
DOCKER_OPTS="<ÆäËûÅäÖÃÏî> --storage-driver=devicemapper" |
ÏÖ×´ÓëδÀ´
Ðí¶àÈËÈÏΪOverlayFSÊÇDocker´æ´¢Çý¶¯µÄδÀ´.È»¶ø,ËüÈÔÈ»²»¹»³ÉÊì.Îȶ¨ÐÔÉÏÒ²²»ÈçһЩ³ÉÊìµÄ´æ´¢Çý¶¯£¬È磺AUFS£¬devicemapper.
ÏÂÃæµÄͼ±í£¬ÏÔʾÁËÿ¸ö´æ´¢Çý¶¯µÄÓÅÊÆÒÔ¼°²»×㣬Çë²Î¿¼£º 
¾ßÌ嵽ijһ¸ö´æ´¢Çý¶¯
Õⲿ·Ö½éÉܾßÌåµÄ´æ´¢Çý¶¯µÄʵÏÖ·½Ê½,¶ÔÓÚ¼¼ÊõÑо¿Õß¿ÉÒԲο¼Ñ§Ï°.¶ÔÓÚÓ¦ÓÃʵ¼ùÕߣ¬¿ÉÒÔÔÝʱֹ²½.±ÊÕß¿´ÁËÕⲿ·ÖÄÚÈÝ£¬Ã»ÓнøÐзÒë×ܽá.ÁôÏ´ýÒÔºóÍê³É.
AUFS
Docker and AUFS in practice
device mapper
Docker and the Device Mapper storage driver |