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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
CoreOS ºÍ Docker ÈëÃÅ
 
×÷Õß sunfan£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-10-13
  5208  次浏览      33
 

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»¿ÉÄܵġ£

   
5208 ´Îä¯ÀÀ       33
Ïà¹ØÎÄÕ Ïà¹ØÎĵµ Ïà¹Ø¿Î³Ì



Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

»ùÓÚÄ£Ð͵ÄÕû³µµç×ÓµçÆø¼Ü¹¹Éè¼Æ
ǶÈëʽÉ豸É쵀 Linux ϵͳ¿ª·¢
Linux µÄ²¢·¢¿É¹ÜÀí¹¤×÷¶ÓÁÐ
ARMǶÈëʽϵͳµÄÎÊÌâ×ܽá·ÖÎö
ǶÈëʽϵͳÉè¼ÆÓëʵÀý¿ª·¢
WinCE6.0µÄEBOOT¸ÅÒª


UML +RoseRealtime+ǶÈëʽ
C++ǶÈëʽϵͳ¿ª·¢
ǶÈëʽ°×ºÐ²âÊÔ
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
ǶÈëʽ²Ù×÷ϵͳVxWorks


Öйúº½¿Õ ǶÈëʽC¸ßÖÊÁ¿±à³Ì
ʹÓÃEAºÍUML½øÐÐǶÈëʽϵͳ·ÖÎöÉè¼Æ
»ùÓÚSysMLºÍEAµÄǶÈëʽϵͳ½¨Ä£
ÉϺ£Æû³µ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
±±¾© ǶÈëʽC¸ßÖÊÁ¿±à³Ì
±±¾© ¸ßÖʸßЧǶÈëʽ¿ª·¢
Nagra linuxÄÚºËÓëÉ豸Çý¶¯Ô­Àí