CoreOSÊÇÒ»¸ö»ùÓÚLinux£¬systemdºÍDockerµÄСÐͲÙ×÷ϵͳ¡£ÔÚÕâÆªÎÄÕÂÀÎÒ½«ÃèÊöÎÒÊÇÔõô¿´´ýCoreOS/DockerµÄ£¬ÒÔ¼°³õʼʹÓÃËüµÄһЩ²½Öè¡£
ʲôÊÇDocker£¬ÎªÊ²Ã´ÕâÊǸöºÃÖ÷Ò⣿
ÕÒµ½ºÏÊʵĴʻãÏòÄÇЩûÓùýËüµÄÈËÃèÊöÊǺÜÀ§Äѵ쬵«ÈÃÎÒ³¢ÊÔһϡ£Ê¹ÓÃdocker£¬Äã¿ÉÒÔ½«Èí¼þ´ò°ü½ø¡°ÈÝÆ÷¡±£¬È»ºó¿ÉÒÔÔÚÄã×Ô¼ºµÄ·þÎñÆ÷ÉÏ»òÕßÒ»Ð©ÔÆ·þÎñƽ̨£¨dotcloud£¬stackdock£¬digitalocean£©ÉÏÔËÐС£Èí¼þÀý×ÓÈçcgit£¬Ò»¸ö¿ìËÙµÄgitÍøÂç½Ó¿Ú¡£Docker½«¸÷¸öÈÝÆ÷·ÅÈë¶ÀÁ¢µÄLinuxÈÝÆ÷£¨Linux
container£¬LXC£©ÖУ¬´ó¶àÊýÊÇΪÁ˸ɾ»ºÍÁ¼ºÃ¶¨ÒåµÄ»·¾³£¬°²È«²»ÊÇÊ×ÒªÒòËØ¡£¾ÍÓйصÄÈí¼þ¶øÑÔ£¬ËüµÄPIDÊÇ1,²¢ÓµÓÐÒ»¸ö¶¯Ì¬µÄÖ÷»úÃû£¬¶¯Ì¬IPµØÖ·ºÍÒ»¸ö¸É¾»µÄÎļþϵͳ¡£
ΪʲôÕâÊǸöºÃÖ÷Ò⣿Ëü×Ô¶¯²¿Ê𣬸ôÀë»úÆ÷²¢³éÏ󻯡£µ±ÎÒÓжà¸ö·þÎñÆ÷ʱ£¬ÎÒ¿ÉÒÔÔÚÆäÖÐÈÎÒâÒ»¸öÉÏÔËÐÐͬÑùµÄ¡¢ÎÞÐ޸ĵÄDockerÈÝÆ÷£¬¶øÒ»µãÒ²²»ÓùØÐÄÈí¼þ£¨ÎÒ½«ÔÚÕâÖ®ºóдcgit£©£¬ÒòΪDockerÌṩµÄ»·¾³ÍêȫһÑù¡£ÕâʹµÃÒÆÖ²Ã»ÓÐË¿ºÁÍ´¿à¡ª¡ª¼Æ»®ÏòÐÂÓ²¼þÉý¼¶¡¢µ±Ïò²»Í¬µÄÖ÷»úת»»»òÕßÒòΪһ¸ö·þÎñÆ÷ÔËÐÐÖжϣ¬Ëü¶¼Ò»Ñù¡£
ÏÖÔÚÄãÒ²Ðí»á˵ÎÒÃÇÒѾÓÐÕâÑùÒ»¸ö¶«Î÷£¬Amazon's EC2ºÍÏàËÆµÄÔÆ·þÎñ´æÔÚ¼¸ÄêÁË¡£±íÃæÉÏ¿´À´£¬Ëü¿´ÆðÀ´·Ç³£ÏàËÆ£¬Î¨Ò»²»Í¬µÄÊÇÄã·¢Ë͵½EC2µÄÊÇÒ»¸öÐéÄâ»ú£¬¶ø²»ÊÇDockerÈÝÆ÷¡£¶ÔÎÒ¶øÑÔ£¬´æÔÚÁ½¸ö×î´óµÄ²»Í¬£º
Docker¸ü¼ÓÄ£¿é»¯£º¼øÓÚÔÚÒ»¸ö¶ÀÁ¢µÄVMÉÏ£¬Ä㲿ÊðµÄ¸÷¸öÓ¦Óþ¼ÃÉϲ»ÎüÒýÈ˶øÇÒ±¿ÖØ£¬Ê¹ÓÃDockerµÄÇáÁ¿ÈÝÆ÷£¬Õâ³ÉΪ¿ÉÄÜ¡£
ÓëDocker¹¤×÷ÓÐÒ»¸ö²»Í¬µÄÄÔÁ¦Ä£ÐÍ¡£Ê¹ÓÃÒ»¸öÐéÄâµÄ³¤ÆÚÔËÐеķþÎñÆ÷£¬ÄãÐèÒªÊÖ¶¯»òÕß×Ô¶¯£¨ÈçʹÓÃPuppet£©À´±£³ÖÆäÔËÐУ¬ÓëÖ®Ïà±È£¬Äã¿ÉÒÔ²»ÔÙ¿¼ÂÇ·þÎñÆ÷£¬¿ªÊ¼¹Ø×¢Èí¼þ/Ó¦Óá£
ΪʲôѡÔñ CoreOS?
CoreOSÓм¸¸öºÜÅ£µÄÌØµã. ËüÒÔÖ»¶ÁģʽÔËÐÐ, ³ýÁË¡°state partition¡±,
Õâ¸öµØ·½£¬ÎÒÃÇ»ù±¾ÉÏʹÓÃËüÀ´´æ·Åϵͳµ¥ÔªÎļþ£¬°üÀ¨Æô¶¯¼àÊÓÄãµÄdockerÈÝÆ÷, ÁíÍ⻹ÓÐdocker¡¯µÄ±¾µØÍ¼Æ¬»º´æºÍһЩ¹Ì¶¨µÄÇøÓò¡£ÎÒϲ»¶Ö»¶ÁÎļþϵͳ£¬ÒòΪÕâÒâζ×Å£¬ËûÃǺÜÎȶ¨£¬²¢ÇÒ¼¸ºõ²»¿ÉÄܱ»ÆÆ»µ.
ÁíÍâ, CoreOS»á×Ô¶¯¸üжøÇÒËüÖØÓÃÁËChromeOSµÄ¸üÐÂÆ÷. ÁíÍ⣬Ëû»¹ÓÐһЩºÜÓÐȤµÄ¼¯ÈºÓÅÊÆ,
¿ÉÒÔ¿´ÕâÆªÎÄÕ etcd, a highly-available key-value store for
service configuration and discovery, ÒÔÕâÆªÎÄÕÂ×÷Ϊ»ù´¡raft consensus
algorithm. Ëû¿ÉÒÔ×ö³öÈÝÒ×µÄmasterÑ¡Ôñ,µ«ÊÇÔÚд×÷µÄµÄʱºò£¬
Õ⻹ûÓÐÓ¦Óá£
µ±È»ÁË, Èç¹ûÄãϲ»¶, ÄãÒ²¿ÉÒÔ°²×°Äã×îϲ»¶µÄLinux·Ö·¢°æ£¬²¢ÇÒ°²×°ÉÏDocker,
which should be reasonable straight-forward (ÇëÔÊÐíÎÒÓü¸¸öСʱ½éÉÜÕâÆªÎÄÕÂDebian¡¯s
old mount(8) version, which has a bug). ´Ó¸öÈ˽ǶȶøÑÔ,ÎÒ·¢ÏÖÕâÊÇÒ»¸öÓÐȤµÄ³¢ÊÔ£¬ÔËÐÐÒ»¸öºÍDocker
hostingÓзdz£ÏàËÆµÄÔ¼ÊøµÄ»·¾³.È»ºó£¬Äã»á·¢ÏÖÄãϲ»¶ÉÏDockerÁË£¡
¶ÔÎÄÖÐËùÓÃÖ÷»úÃûÀ´Ëµ£¬home ´ú±íÄ㽨Á¢ Docker ÈÝÆ÷²¢°ÑËüÃÇ·¢²¼µ½·þÎñÆ÷֮ǰËùÓõļÒÀï»ò°ì¹«´¦µÄµçÄÔ¡£d0(d0.zekjur.net)
´ú±íÔËÐÐ CoreOS »òÆäËü²Ù×÷ϵͳ²¢°²×°ÔËÐÐÁË Docker µÄ»úÆ÷¡£ÃÀÔª·ûºÅ($) ´ú±í×÷ΪĬÈϵÄÎÞÌØÈ¨Óû§
core Ö´ÐеÄÃüÁ¾®×Ö·û(#) ´ú±í×÷Ϊ root Ö´ÐеÄÃüÁî(ÔÚ CoreOS ÉÏÓà sudo -s
¿ÉµÃµ½ root shell )¡£
×¢Ò⣬ÎÒ¼Ù¶¨ÄãÔÚ home Ö÷»úÉÏÒ²ÓÐÒ»¸ö Docker ÔÚÔËÐС£
µÚÒ»²½: Docker»¯ cgit
Äã¼È¿ÉÒÔʹÓý»»¥Ê½ÃüÁîÐÐÊÖ¶¯´´½¨Ò»¸ödockerÈÝÆ÷»òÕßʹÓÃÒ»¸öDockerfile¡£µÚÒ»ÖÖÃüÁîÐеķ½Ê½ÊǷdz£ÈÝÒ׳ö´íµÄ£¬Òò´Ë½öΪÁ˳¢ÏÊ£¬ÎÒÖ»ÍÆ¼öʹÓÃDockerfiles¡£Ò»¸öDockerfileµÄ¿ªÍ·Ö¸¶¨ÁËÒ»¸ö±ê×¼¾µÏñ£¬¿ÉÒÔÊÇÒ»¸öСÐÍ»·¾³(busybox)
»òÕ߸ü¶àµÄÊÇÒ»¸ölinux·¢ÐаæµÄ×îС·â×°£¬ÈçÔÚÎÒÃǵÄÀý×ÓÀïʹÓõÄÊÇ tianon/debian¡£
¶¨ÒåÁ˱ê×¼¾µÏñÒÔºó, Äã¿ÉÒÔÔÚRUNÃüÁîºóÃæÔËÐÐÈÎÒâµÄÃüÁ»¹¿ÉÒÔÔÚADDÃüÁîÖ®ºóÌí¼ÓÎļþ.
ÈÝÆ÷ÄÚÍâµÄ½Ó¿ÚÆäʵ¾ÍÊÇÒ»¸ö»òÕß¶à¸öTCP¶Ë¿Ú. µ±Ç°±È½Ï³£ÓõÄÊÇHTTPʹÓõľµä¶Ë¿Ú80. ×îºóÒ»¸öÐèÒªÖ¸¶¨µÄÊÇÈë¿Ú(ENTRYPOINT),
¾ÍÊǵ±ÄãÔËÐÐÈÝÆ÷µÄʱºòdocker»áÊ×ÏÈÖ´ÐеijÌÐò. ÎÒÃÇΪcgitʹÓõÄDockerfile¾ÍÏñÕâÑù:
FROM tianon/debian:sid RUN apt-get update RUN apt-get dist-upgrade -y RUN apt-get install -y lighttpd ADD cgit /usr/bin/cgit ADD cgit.css /var/www/cgit/cgit.css ADD cgit.png /var/www/cgit/cgit.png ADD lighttpd-cgit.conf /etc/lighttpd/lighttpd-cgit.conf ADD cgitrc /etc/cgitrc EXPOSE 80 ENTRYPOINT ["/usr/sbin/lighttpd", "-f", "/etc/lighttpd/lighttpd-cgit.conf", "-D"] |
ÔÚÎҵĻúÆ÷ÉÏ£¬Õâ¸öÎļþΪ ~/Dockerfiles/cgit/Dockerfile¡£ÔÚ cgit Ŀ¼ÏµÄÕâ¸öÎļþÅÔ£¬ÎÒ·ÅÁË
cgit-0.9.2 µÄÔ´´úÂ룬²¢ÇÒ´Ó±àÒëĿ¼Ê÷Öн« cgit¡¢cgit.css ºÍ cgit.png
¿½±´³öÀ´¡£lighttpd-cgit.conf Ï൱¼òµ¥£º
server.modules = ( "mod_access", "mod_alias", "mod_redirect", "mod_cgi", ) mimetype.assign = ( ".css" => "text/css", ".png" => "image/png", ) server.document-root = "/var/www/cgit/" # Note that serving cgit under the /git location is not a requirement in # general, but obligatory in my setup due to historical reasons. url.redirect = ( "^/$" => "/git" ) alias.url = ( "/git" => "/usr/bin/cgit" ) cgi.assign = ( "/usr/bin/cgit" => "" ) |
×¢Ò⣬ÎÒÃÇÊÖ¹¤±àÒë cgit µÄΨһÔÒòÊÇÒòΪ»¹Ã»ÓÐËüµÄ Debian °ü£¨±àÒë¹ý³ÌÓеãÌØÊâ¡£¡£¡££©¡£ÎªÁËʵ¼Ê±àÒëÕâ¸öÈÝÆ÷²¢ÇÒÕýÈ·µÄ´ò±êÇ©£¬ÔËÐÐ
rundocker build -t="stapelberg/cgit" . £º
home $ docker build -t="stapelberg/cgit" . Uploading context 46786560 bytes Step 1 : FROM tianon/debian:sid ---> 6bd626a5462b Step 2 : RUN apt-get update ---> Using cache ---> 3702cc3eb5c9 Step 3 : RUN apt-get dist-upgrade -y ---> Using cache ---> 1fe67f64b1a9 Step 4 : RUN apt-get install -y lighttpd ---> Using cache ---> d955c6ff4a60 Step 5 : ADD cgit /usr/bin/cgit ---> e577c8c27dbf Step 6 : ADD cgit.css /var/www/cgit/cgit.css ---> 156dbad760f4 Step 7 : ADD cgit.png /var/www/cgit/cgit.png ---> 05533fd04978 Step 8 : ADD lighttpd-cgit.conf /etc/lighttpd/lighttpd-cgit.conf ---> b592008d759b Step 9 : ADD cgitrc /etc/cgitrc ---> 03a38cfd97f4 Step 10 : EXPOSE 80 ---> Running in 24cea04396f2 ---> de9ecca589c8 Step 11 : ENTRYPOINT ["/usr/sbin/lighttpd", "-f", "/etc/lighttpd/lighttpd-cgit.conf", "-D"] ---> Running in 6796a9932dd0 ---> d971ba82cb0a Successfully built d971ba82cb0a |
µÚ¶þ²½£ºÍƵ½×¢²áÆ÷
Docker¹«Ë¾Ä¬ÈÏ»áÌṩһ¸ö´Ó×¢²áÆ÷³éȡͼƬµÄ·þÎñ¡£ÓÉÓÚ×¢²áÈÝÆ÷¿ÉÄܰüº¬»úÃܵÄÅäÖÃÐÅÏ¢ÈçÃÜÂëºÍÆäËûµÄÖ¤Ê飬Òò´Ë²»½¨Òé°ÑͼƬ·ÅÈëµ½¹«¹²µÄ×¢²áÆ÷ÖС£dockify.ioºÍquay.ioÌṩÁË˽ÈË×¢²áÆ÷µÄ·þÎñ£¬µ«ÊÇÄãÒ²¿ÉÒÔʹÓÃÄã×Ô¼ºµÄ¡£µ±ÄãʹÓÃ×Ô¼ºµÄ×¢²áÆ÷ʱÐèҪעÒâÄãÊDZ£Ö¤ËüµÄ¿ÉÓÃÐÔ¡£Ð¡ÐıðÔÚµ±ÄãÐèҪͨ¹ý¹êËÙµÄDSLÀ´´«ËÍÄãµÄdockerÈÝÆ÷µ½×Ô¼ºË½È˵Ä×¢²áÆ÷ʱ£¬³öÏÖÍøÂçÖжϵÄÇé¿ö¡£Ò»¸öÌæ»»·½·¨¾ÍÊÇʹÓÃ×Ô¼ºµÄ×¢²áÆ÷µ«ÊÇͨ¹ý¸¶·Ñ·½Ê½°ÑÈÝÆ÷ÄÇЩÎļþ´æ´¢µ½ÑÇÂíÑ·S3ÉÏ£¬ÔÚĬÈÏÅäÖÃϺÜÈÝÒ×ÔËÐÐ×Ô¼ºµÄ×¢²áÆ÷µÄ£¨Ö»´æ´¢Êý¾ÝÔÚÈÝÆ÷ϵÄ/tmpĿ¼Ï£¬ÎÞÐèÈÏÖ¤£©
?
d0 $ docker run -p 5000:5000 samalba/docker-registry |
È»ºó£¬Äã¿ÉÒÔ¶ÔÎÒÃÇÔÚ²½Öè1Öн¨Á¢µÄͼƬ½øÐбê¼ÇºÍÍÆËÍͼƬµ½×¢²áÆ÷ÖУº
docker tag stapelberg/cgit d0.zekjur.net:5000/cgit docker push d0.zekjur.net:5000/cgit |
µÚÈý²½: ÔÚCoreOSÉÏÔËÐÐcgit
ΪÁ˼òµ¥µÄÔËÐÐcgitÈÝÆ÷£¬ÎÒÃÇÔËÐÐһϴúÂë:
d0 $ docker run d0.zekjur.net:5000/cgit 2013-12-07 18:46:16: (log.c.166) server started |
µ«ÊÇÕ⻹²»ÊÇËûµÄÈ«²¿×÷ÓÃ, 80¶Ë¿ÚÖ»ÊDZ»cgitÈÝÆ÷ʹÓÃ,»¹Ã»ÓÐÌṩ¸øÍâ½ì»òÕßÊÇÆäËûµÄcgitÈÝÆ÷·ÃÎÊ.
»òÕßÄãÒ²¿ÉÒÔʹÓÃ-p 80²ÎÊýÈ¥×Ô¶¨ÒåÄãµÄ¶ÔÍâ¶Ë¿Ú¡£
d0 $ docker run -p 4242:80 d0.zekjur.net:5000/cgit |
µ±Ê¹ÓÃä¯ÀÀÆ÷·ÃÎÊ http://d0.zekjur.net:4242/ ʱ,Äã¾ÍÄÜ¿´µ½cgitÁË.µ«ÊÇ,
¼´Ê¹ÄãÔÚ×Ô¼ºµÄcgitrcÖн¨Á¢ÁËÒ»¸ögit²Ö¿â,Ëû»¹ÊDz»Æð×÷ÓÃ,ÒòΪÔÚÕâ¸öÈÝÆ÷ÖУ¬Ëû»¹ÊÇûÓÐgit²Ö¿â.ËùÒÔ×îÓÐЧµÄ·½·¨¾ÍÊǸøËûÃÇÌṩһ¸öȨÏÞ¡£ÔÚÕâ¸öÀý×ÓÖУ¬ÔÚÈÝÆ÷ÖÐÖ»¶Á¡£´´½¨
/media/state/_CUSTOM/git ÕâĿ¼£¬²¢ÇÒ½«ÄãµÄ²Ö¿â·ÅÔÚÀïÃæ, ÔÙÖØÐÂÆô¶¯ÈÝÆ÷:
d0 # mkdir -p /media/state/_CUSTOM/git d0 # cd /media/state/_CUSTOM/git d0 # git clone git://github.com/stapelberg/godebiancontrol d0 $ docker run -v /media/state/_CUSTOM/git:/git:ro \ -p 4242:80 d0.zekjur.net:5000/cgit |
ÕâÑùÄã¾ÍÄÜÔÚ²Ö¿âÖп´µ½Õâ¸ögit²Ö¿âÁË.ÏÖÔÚ£¬ÎÒÃǾÍÐèÒª¸øcgit½¨Á¢Ò»¸öunit½Å±¾£¬È·±£»úÆ÷ÖØÆô£¬ÈÝÆ÷Ò²ÄÜ×Ô¶¯¿ªÆôÁË£º
d0 # cat >/media/state/units/cgit.service <<'EOT' [Unit] Description=cgit After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker run \ -v /media/state/_CUSTOM/git:/git:ro \ -p 4242:80 \ d0.zekjur.net:5000/cgit [Install] WantedBy=local.target EOT d0 # systemctl daemon-reload |
µÚËIJ½: ÔÚÈÝÆ÷µÄǰ¶ËÔËÐÐnginx
Äã¿ÉÄÜ×¢Òâµ½ÁËÎÒÃDz¢Ã»ÓÐÖ±½ÓÔÚ80¶Ë¿ÚÉÏÖ±½Ó±©Â¶cgit. ´ó¶àÊýʱºò£¬ÄãûÓÐÄÇô¶àµÄ¹«¹²µÄIPµØÖ·À´¸øÃ¿¸ö·þÎñ·ÖÅäÒ»¸ö¡£ËùÒÔÎÒÃDz¿ÊðÒ»¸önginxÀ´×÷ΪÆäËû·þÎñµÄ·´Ïò´úÀí£¬ÕâÑù×ö»¹ÓÐÒ»¸öºÃ´¦ÊÇ¿ÉÒÔ¶ÔÆäËû·þÎñ½øÐÐÎÞ·ìÉý¼¶(ÔÚÁíÒ»¸ö¶Ë¿ÚÆô¶¯Ð°汾µÄcgit²¢²âÊÔ£¬È»ºóÖØÆônginx,
°ÑÇëÇóתÏòÕâ¸öа汾µÄcgit)¡£
ÔÚdockerÀï°²×°nginx¸ú°²×°cgitÊǺÜÏàËÆµÄ, ½öÐèһЩÊÖ¶¯±à¼:
home $ mkdir -p ~/Dockerfiles/nginx home $ cd ~/Dockerfiles/nginx home $ cat >Dockerfile <<'EOT' FROM tianon/debian:sid RUN apt-get update RUN apt-get dist-upgrade -y RUN apt-get install -y nginx-extras EXPOSE 80 ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"] EOT home $ docker build -t=stapelberg/nginx . home $ docker tag stapelberg/nginx d0.zekjur.net:5000/nginx home $ docker push d0.zekjur.net:5000/nginx |
ÏÖÔÚ, ÎÒÃDz¢²»Ö±½Ó½« cgit ±©Â¶³öÀ´, ¶øÊÇ°Ñ cgit µÄ4242¶Ë¿Ú°ó¶¨µ½ docker0
µÄÇŽӽӿÚÉÏ, ÆäËûÈÝÆ÷Ò²¿ÉÒÔ·ÃÎÊÕâ¸ö½Ó¿Ú:
d0 $ docker run -v /media/state/_CUSTOM/git:/git:ro \ -p 172.17.42.1:4242:80 d0.zekjur.net:5000/cgit |
ÎÒ¾ö¶¨²»°Ñʵ¼ÊµÄÐéÄâÖ÷»úÅäÖðüÀ¨ÔÚ Nginx ÈÝÆ÷ÖУ¬¶øÊDZ£³ÖÔÚ /media/state/_CUSTOM/nginx
ÖУ¬ÒÔ±ã¿ÉÒÔÐÞ¸ÄËü£¨Î´À´¿ÉÄÜʵÏÖ×Ô¶¯»¯£©£¬¿ÉÒÔ¼òµ¥µØÍ¨¹ýÏò Nginx ·¢ËÍ SIGHUP ÐźÅÀ´ÖØÐ¼ÓÔØËü£º
d0 # mkdir -p /media/state/_CUSTOM/nginx d0 # cat >/media/state/_CUSTOM/nginx/cgit <<'EOT' server { root /usr/share/nginx/www; index index.html index.htm; server_name d0.zekjur.net; location / { proxy_pass http://172.17.42.1:4242/; } } EOT |
×îºóÒ»²½£¬ÔËÐÐ nginx ÈÝÆ÷£¬ÈçÏ£º
d0 $ docker run -v /media/state/_CUSTOM/nginx:/etc/nginx/sites-enabled:ro \ -p 80:80 dock0.zekjur.net:5000/nginx |
Ò»ÇÐÍê³Éºó£¬µ±ÄãÔÚä¯ÀÀÆ÷ÖзÃÎÊ d0.zekjur.net £¬Äã»áÊܵ½ cgit µÄ»¶Ó!
Í´µã£ºÊý¾Ý¸´ÖÆ
Èç¹ûÄã×ÐϸÔĶÁ´ËÎÄ£¬Æäʵ£¬ÄãÈ·ÐÅÒѾעÒâµ½ÎÒÃÇÔÚÿ¸öDocker½ÚµãµÄ´æÖü״̬£ºgit²Ö¿â£¬Éú»î/ýÌå/״̬/_¿Í»§/git.ËäÈ»git²Ö¿âÌ«ÈÝÒ׸´Öƺͱ¸·Ý£¬µ«ÊÇ£¬Ê¹ÓÃÆäËûÓ¦ÓóÌÐò£¬ÕâºÃÏñÌ«ÄÑ£ºÏëÏóÒ»ÏÂÒ»¸öµäÐ͵Ätrac°²×°£¬ËüÐèÒªÒ»¸öÊý¾Ý¿âºÍÒ»¶Ô´æÖüÓйظ½¼ÓÎļþµÄ»·¾³Îļþ¼Ð¡£
ÎÞÂÛDocker»¹ÊÇCoreos¶¼²»Äܽâ¾öÕâ¸öÎÊÌ⣬ÕâÊÇÒ»¸öÄã±ØÐë×Ô¼º½â¾öµÄÎÊÌâ¡£¼ÇÒäÖеÄDRBD»òÕßrsyncÑ¡ÔñºÜÉÙÒ»Ö£¬µ«ÊÇÒ²Ðí¸üÈÝÒ׸´ÖÆ¡£ÔÚÊý¾Ý¿â·½Ã棬Óкܶà¶ÔPostgreSQLºÍMySQL
Í´¿àµÄÒ»µã: ²»È·¶¨µÄ¹¹½¨
ÎÒÓÃÉÏÃæµÄDockerfiles,¶¼ÊÇ»ù±¾µÄÓ³Ïñ£¨tianon/ debian£©£¬ÔÚĿǰDebianÖзַÖÖÓ¿ÉÄÜ»á¸Ä±ä.
½ñÌìÎÒ¹¹½¨µÄDockerFile£¬Ã÷ÌìÄã¾Í²»ÄÜʹÓÃÁË.½á¹û¾ÍÊÇ£¬DockerÎļþÐèÒªÒÀÀµ¿É¿¿µÄ´æ´¢¡£ÎÒÒѾÔÚµÚ¶þ²½ÖÐÃèÊöÁË×¢²áÖÐÐÄ£¬
µ«ÊÇ£¬Õâ±ßÒ²ÓÐÎÄÕ½éÉÜ other posts about the registry situation.
»¹ÓÐÍ´¿àµÄÒ»µã:
µ±DockerÈÝÆ÷ÒÔ¶ÁдȨÏÞÔËÐеÄʱºò£¬ÎÒ¾ÍÌØ±ð½ôÕÅ£¬¶øÇÒÕâҲûÓÐÆäËûµÄ°ì·¨ÈÃËüÒÔÖ»¶Á·½Ê½ÔËÐС£ÕâÒâζ×ÅÄãÐèÒªµÃµ½ÕýÈ·µÄȨÏÞ£¬·ñÔòÈκÎÊý¾ÝÈí¼þдÈë´ÅÅ̶¼ÓпÉÄܶªÊ§£¬ÌرðÊǵ±Ä㲿ÊðÒ»¸öеÄDockerÈÝÆ÷µÄʱºò¡£¼ÙÉè,
Õâ¸öÈí¼þÎÞ·¨´æ´¢ÈκÎÊý¾Ý,³ýÁËÄãÏëÔÚÉèÖÃÁËȨÏÞ£¬Ä³Ð©Îļþ±»ÓÀ¾Ã´æ´¢
I sent a Pull Request for read-only
containers, µ«ÊÇ£¬¿´ÆðÀ´Ã»Óб»ºÏ²¢µÄÒâ˼¡£
×îÍ´¿àµÄÒ»µã: CoreOS×Ô¶¯ÖØÆô
ÔÚÎÒд×÷µÄʱºò, CoreOSÿ´Î¸üж¼»áÖØÆô. ¼´Ê¹ÄãÖ»ÊǸøCoreOS×öÁËÒ»´Î½¡¿µ¼ì²é,ÕâÒ²Òâζ×ÅÒ»´Î·þÎñÖжÏ.
ΪÁ˱ÜÃâËü, ʹÓÃinhibitor ²¢ÇÒÔÚ·þÎñÈ«²¿Ç¨ÒÆÖ®ºóʱ²»Ê±µÄÊÖ¶¯ÖØÆôµçÄÔ.
½áÂÛ
Docker¿´ÆðÀ´ÔÚÕýÈ·µÄ·½ÏòÉÏÂõ³öÁËÒ»´ó²½,µ«ÊÇÔÚµ½´ïÎÒÃǵÄÄ¿±ê֮ǰ£¬Õ⻹ÊÇÓкܶàϸ΢µÄ¸Ä½øÐèÒªÍêÉÆ.
ÀíÏëµÄ˵, Õ⽫»áÓкܴóÒ»²¿·ÖÖ¾Ô¸Õß·ÇÓªÀûµÄÔËÐÐDockerÈÝÆ÷,ÒÔÖÁÓÚÿһ¸öÈ˶¼ÄÜ·ÃÎʵ½Ò»Ì¨·þÎñÆ÷.
ÔÚÕâ¸ö³ÉΪ¿ÉÄÜ֮ǰ, ÎÒÃÇÒ²ÐèÒªÒ»¸ö½â¾ö·½°¸È¥Ç¨ÒÆDockerÈÝÆ÷²¢ÇÒ×Ô¶¯Í¬²½ËûÃǵij־û¯×´Ì¬£¬·ñÔòµÄ»°£¬ÔÚһ̨еĻúÆ÷ÉÏÆô¶¯DockerÈÝÆ÷»¹ÊDz»¿ÉÄܵġ£
|