DockerÒÑѸËÙ³ÉΪ±¾ÈË×îϲ»¶µÄ»ù´¡¹¤¾ßÖ®Ò»£¬ÒԱ㹹½¨¿ÉÖØ¸´Èí¼þ²úÆ·£¬´Ó¶ø´øÀ´¾¡¿ÉÄܾ²Ì¬µÄ·þÎñÆ÷»·¾³¡£
ÎÒÔÚ±¾ÎÄÖн«¸ÅÊöÎÒÔÚʹÓÃDockerµÄ¹ý³ÌÖпªÊ¼·´¸´³öÏֵļ¸ÖÖģʽ¡£ÎÒ²»Ö¸ÍûËüÃÇ»á´øÀ´¶àÉÙÐÂÆæ»ò¾ªÏ²£¬µ«Ï£ÍûÆäÖÐһЩÓÐÓã¬ÎÒÒ²ºÜÏëÌýÌý¸÷λÔÚʹÓÃDocker¹ý³ÌÖÐÓöµ½µÄģʽ¡£
ÎÒÊÔÓÃDockerµÄ»ù´¡ÊDZ£³ÖÔÚ¾íÖгÖÐøµÄ״̬£¬ÄÇÑùDockerÈÝÆ÷±¾Éí¿ÉÒÔËæÒâÖØ½¨£¬¶ø²»»á¶ªÊ§Êý¾Ý(³ý·ÇÎҸ͝ÈÝÆ÷״̬£¬¶ø²»¸üÐÂDockerÎļþ(Dockerfile)µÄ״̬£¬¶ø¾³£Öؽ¨ÈÝÆ÷ÓÐÖúÓڸĵôÕâ¸ö»µÏ°¹ß)¡£
ÏÂÃæµÄʾÀýDockerÎļþ¶¼×¨×¢ÓÚ´Ë£º¹¹½¨ÈÝÆ÷¨D¨DÔÚÕâÖÖ»·¾³Ï£¬ÈÝÆ÷±¾Éí¿ÉÒÔËæÊ±¸ü»»£¬Ã»±ØÒª¿¼ÂÇËü¡£
1. ¹²Ïí»ù´¡ÈÝÆ÷
Docker¹ÄÀø¡°¼Ì³Ð¡±£¬ËùÒÔÕâÓ¦¸Ã²¢²»Ææ¹Ö¨D¨D¼Ì³ÐÊǸßЧʹÓÃDockerµÄÒ»¸ö»ù±¾·½Ã棬ÓÈÆäÊÇÓÉÓÚËüÓÐÖúÓÚ¼õÉÙ¹¹½¨ÐÂÈÝÆ÷ËùÐèµÄʱ¼ä£¬ÒòΪû±ØÒªÄÇôƵ·±µØÖØÐÂÖ´Ðв½Öè¡£Docker»áÊÔͼ½«Öм䲽Öè·ÅÈëµ½»º´æ£¬ËüÔÚÕâ·½Ãæ×öµÃºÜºÃ¨D¨DÓÐʱ̫ºÃÁË£¬²»¹ýÒªÊÇûÓÐÃ÷È·×¢Ã÷£¬Ò²ºÜÈÝÒ×´í¹ý¹²ÏíµÄ»ú»á¡£
½«Îҵĸ÷ÖÖÈÝÆ÷Ç¨ÒÆµ½DockerÉÏʱÃ÷ÏÔ³öÏÖµÄÊÂÇéÖ®Ò»ÊÇ£¬´æÔÚÌ«¶àµÄÈßÓàÉèÖá£
ÎÒΪԤ¼Æ²¿Êðµ½Èκεط½µÄ´ó¶àÊýÏîÄ¿ÔËÐе¥¶ÀµÄÈÝÆ÷£¬ÖÁÉÙËüÐèÒªÈκγ¤Ê±¼äÔËÐеĽø³Ì£¬»òÕßÐèÒª¡°±ê×¼¡±³ÌÐò°ü¼¯Ö®ÍâµÄÈκÎÌØ¶¨³ÌÐò°üʱ£¬ÊÇÕâÑù£¬Òò¶øÎÒÓкöàÈÝÆ÷£¬¶ø³ÌÐò°üѸËÙ±äµÃÔ½À´Ô½¶à¡£
µÈµ½ÎÒ¿¼ÂÇÇ¨ÒÆÊ±£¬¾ÍÊÔͼÔÚDockerÖÐÔËÐС°Ò»ÇС±(°üÀ¨ÎÒÒÀÀµµÄÉÙÊý¼¸¸ö×ÀÃæÓ¦ÓóÌÐò)£¬ÒÔ±ãÈÃÎÒµÄmybase»·¾³ÍêÈ«¿ÉÒÔËæÒâʹÓá£
ÓÚÊÇÎҺܿ쿪ʼ½«ÎҵĻù±¾ÉèÖÃÌáÈ¡µ½»ù´¡ÈÝÆ÷£¬ÓÃÓÚÖÚ¶àÓÃ;¡£ÏÂÃæÊÇÎÒµ±Ç°µÄ¡°devbase¡±DockerÎļþ£º
FROM debian:wheezy RUN apt-get update RUN apt-get -y install ruby ruby-dev build-essential git RUN apt-get install -y libopenssl-ruby libxslt-dev libxml2-dev # ÓÃÓÚµ÷ÊÔ RUN apt-get install -y gdb strace # ÉèÖÃÎÒµÄÓû§ RUN useradd vidarh -u 1000 -s /bin/bash --no-create-home RUN gem install -n /usr/bin bundler RUN gem install -n /usr/bin rake WORKDIR /home/vidarh/ ENV HOME /home/vidarh VOLUME ["/home"] USER vidarh EXPOSE 8080 |
ÕâÀïûÓÐʲôÐèÒªÌØ±ð˵Ã÷µÄ¨D¨DËü°²×°ÁËÎÒÍùÍùϲ»¶ËæÊ±¿ÉÓõÄÒ»Ð©ÌØ¶¨¹¤¾ß¡£ÕâЩ¹¤¾ß¶Ô´ó¶àÊýÈËÀ´Ëµ¿ÖŲ»Ò»Ñù¡£Ñ¡ÔñʲôÑùµÄ·¢ÐаæºÜËæÒâ¡£ÖµµÃ¿¼ÂǵÄÊÇ£¬Èç¹û/µ±ÄãÖØ½¨ÈÝÆ÷ʱ£¬¾ÍÒªÖ¸¶¨Ò»¸öÌØ¶¨µÄ±ê¼ÇÒÔ±ÜÃâÒâÍâ¡£
ËüÔÚĬÈÏÇé¿öϱ©Â¶Á˶˿Ú8080£¬ÒòΪÄÇÊÇÎÒͨ³£±©Â¶WebÓ¦ÓóÌÐòµÄ¶Ë¿Ú£¬ÎÒͨ³£½«ÕâЩÈÝÆ÷ÓÃÓÚÕâЩWebÓ¦ÓóÌÐò¡£
ËüΪÎÒÌí¼ÓÁËÒ»¸öÓû§£¬½«useridÉèÖÃΪ·þÎñÆ÷ÉϵÄÓû§ID£¬²¢²»´´½¨/homeĿ¼¡£Ö®ËùÒÔ²»´´½¨/homeĿ¼£¬ÊÇÓÉÓÚÎÒ´ÓÖ÷»ú°ó¶¨¹ÒÔØ¹²Ïí/
home£¬Õâ¾ÍÒý³öÁËÏÂÒ»ÖÖģʽ¡£
2. ¹²Ïí¾í¿ª·¢ÈÝÆ÷
ÎÒµÄËùÓпª·¢ÈÝÆ÷ÓëÖ÷»úÖÁÉÙ¹²ÏíÒ»¸ö¾í£º/ home£¬Õâô×öÊÇΪÁ˱ãÓÚ¿ª·¢¡£¾ÍÐí¶àÓ¦ÓóÌÐò¶øÑÔ£¬ËüÈÃÎÒ¿ÉÒÔÈÃÓëºÏÊʵĻùÓÚÎļþ-ϵͳ-±ä¸üµÄ´úÂëÖØÔØÆ÷Ò»ÆðÔËÐеÄÓ¦ÓóÌÐò´¦ÓÚ¿ª·¢Ä£Ê½£¬ÄÇÑùÈÝÆ÷¾Í¿ÉÒÔ·â×°²Ù×÷ϵͳ/·¢Ðаæ²ãÃæµÄÒÀÀµÏ²¢ÇÒ°ïÖú֤ʵÀ¦°óµÄÓ¦ÓóÌÐòÔÚÔʼ»·¾³ÖÐÔËÐУ¬ÎÒÓò»×ÅÕë¶Ôÿ´¦´úÂë±ä¸ü£¬ÐèÒªÍêÈ«ÖØÆô/ÖØ½¨ÐéÄâ»ú¡£Óë´Ëͬʱ£¬ÎÒ¿ÉÒÔÏ൱Ƶ·±µØÖØÆôÐéÄâ»ú£¬È·±£Ã»ÓÐʲô´íʧ¡£
ÖÁÓÚÆäËû£¬ËüÈÃÎÒ¿ÉÒÔÖ»ÒªÖØÆô(¶ø²»ÊÇÖØ½¨)ÈÝÆ÷£¬¼´¿É½ÓÊÜ´úÂë±ä¸ü¡£
¶ÔÓÚ²âÊÔ/ÊÔÔËÐÐÈÝÆ÷ºÍÉú²úÈÝÆ÷£¬ÎÒÔÚ´ó¶àÊýÇé¿öÏ»á±ÜÃâͨ¹ý¾í¹²Ïí´úÂ룬¶øÊÇʹÓá°ADD¡±ÃüÁ½«ÏàÓ¦´úÂëÌí¼Óµ½DockerÈÝÆ÷±¾ÉíÖС£
±ÈÈç˵£¬ÏÂÃæÊÇÎÒ¡°homepage¡±¿ª·¢ÈÝÆ÷µÄDockerÎļþ£¬Ëüº¬ÓÐÎÒ×ÔÖ÷¿ª·¢µÄ¸öÈËά»ù£¬¿ÉÀûÓÃÀ´×Ô¡°devbase¡±ÈÝÆ÷µÄÒѾ¹²ÏíµÄ/home¾í£¬²¢Õ¹Ê¾Á˹²Ïí»ù´¡ÈÝÆ÷ºÍÎÒÈçºÎʹÓù²Ïí/home¾í£º
FROM vidarh/devbase WORKDIR /home/vidarh/src/repos/homepage ENTRYPOINT bin/homepage web |
(×¢Ò⣺ÎÒȷʵӦ¸Ã¶ÔÎÒµÄdevbaseÈÝÆ÷¼ÓÉϰ汾±ê¼Ç)
ÖÁÓÚÎÒ²©¿ÍµÄ¿ª·¢°æ±¾£º
FROM vidarh/devbase WORKDIR / USER root # Õë¶ÔGraphivzÕûºÏ RUN apt-get update RUN apt-get -y install graphviz xsltproc imagemagick USER vidarh WORKDIR /home/vidarh/src/repos/hokstad-com ENTRYPOINT bundle exec rackup -p 8080 |
ÒòΪËüÃÇ´Ó¹²ÏíÈí¼þ¿â»ñÈ¡´úÂ룬¶øÇÒ»ùÓÚ¹²ÏíµÄ»ù´¡ÈÝÆ÷£¬µ±ÎÒÌí¼Ó/ÐÞ¸Ä/ɾ³ýÒÀÀµÏîʱ£¬ÕâЩÈÝÆ÷ͨ³£¿ÉÒÔ¼«ÆäѸËÙµØÖؽ¨£¬ÎÒ¾õµÃÕâºÜÖØÒª£¬ÒÔ±ãÈ·±£ÎÒûÓÐÈ̲»×¡²ÉÓÃÊèºöδ¼Ç¼ÒÀÀµÏîµÄ±äͨ·½·¨¡£
¼´±ãÈç´Ë£¬¿Ï¶¨ÓÐЩ·½ÃæÊÇÎÒÏë¸Ä½øµÄ¡£¾¡¹ÜÉÏÊö»ù´¡ÈÝÆ÷ÊÇÇáÁ¿¼¶£¬µ«ËüÃǿ϶¨²»Ö¹ÕâÑù£ºÕâЩÈÝÆ÷ÖеĴó¶àÊýÄÚÈÝÈÔȻδʹÓá£ÓÉÓÚDocker²ÉÓÃдʱ¿½±´(copy-on-write)¸²¸Ç£¬Õâ²»»áµ¼ÖÂÅÓ´ó¿ªÏú£¬µ«È·ÊµÈÔÒâζ×ÅÎÒ²¢Ã»ÓÐÕæÕýÌåÏÖ×î»ù±¾ÐèÇó£¬Ò²Ã»Óо¡¿ÉÄܼõÉÙ¹¥»÷»ò³ö´í·çÏÕ(ÎÒµ¹²»ÊǺܵ£ÐÄÕâÐ©ÌØ¶¨Çé¿öµÄ¹¥»÷·çÏÕ£¬ÒòΪÎҵIJ©¿Í²¢²»ÔÚ¡°ÊµÊ±¡±°æ±¾Öк¬ÓÐÈκÎÖØÒª×´Ì¬¡£)¡£
3. ¿ª·¢¹¤¾ßÈÝÆ÷
Õâ¶ÔÏñÎÒÃÇÕâЩϲ»¶ÒÀ¿¿Í¨¹ýsshÁ¬½ÓÖÁÆÁÄ»»á»°À´±àд´úÂëµÄÈËÀ´Ëµ¿ÉÄÜ×îÓÐÎüÒýÁ¦£¬¶ø¶ÔIDEÈËȺÀ´Ëµ²»Ì«ÓÐÎüÒýÁ¦;µ«¶ÔÎÒÀ´£¬ÉÏÊö·½°¸µÄÒ»¸öºÃ´¦¾ÍÊÇ£¬ËüÈÃÎÒ¿ÉÒÔ½«±à¼ºÍ²âÊÔÖ´Ðв¿·Ö´úÂëÓëÔËÐпª·¢ÖеÄÓ¦ÓóÌÐò·ÖÀ뿪À´¡£
¹ýÈ¥¿ª·¢ÏµÍ³·½ÃæºÜ·³È˵ÄÎÊÌâÖ®Ò»ÊÇ£¬¿ª·¢¼°Éú²úÒÀÀµÏîÓ뿪·¢¹¤¾ßÒÀÀµÏîºÜÈÝÒ×»ìÔÚÒ»Æð¡£Äã¿ÉÒÔÊÔ׎«ËüÃÇ·Ö¿ªÀ´£¬µ«³ý·ÇÕâЩÉèÖÃÕæÕý×öµ½ÁË·ÖÀ뿪À´£¬·ñÔòºÜÈÝÒ×½¨Á¢Î´¼Ç¼ÒÀÀµÏî¡£
ÔÚ¹ýÈ¥£¬ÎÒ»¨Á˼¸ÖܶÔÓ¦ÓóÌÐòµÄÒÀÀµÏî½øÐС°·´Ïò¹¤³Ì¡±ºó£¬×ÜËã¸ãÇå³þÁËÕâ¸öÎÊÌâ¡£ÓÉÓÚ¿ª·¢»·¾³¡¢²âÊԺͳõʼÔÐͲ¿Êð»·¾³»ìÔÚÒ»Æð£¬Õâ¸öÓ¦ÓóÌÐò»ýÀÛÁ˸÷ÖÖ¸÷ÑùµÄδ¼Ç¼ÒÀÀµÏî¡£
ËäÈ»Óкܶ෽·¨¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣺ֻҪȷ±£Äã½øÐж¨ÆÚµÄ²âÊÔ²¿Ê𣬽áºÏÉÏÊöģʽ£¬µ«ÎÒ»¹ÊÇÓÐÒ»ÖÖ¸öÈ˺Üϲ»¶µÄ½â¾ö·½°¸£¬ÒòΪËü¿ÉÒÔ´Ó¸ù±¾ÉÏ·ÀÖ¹ÎÊÌâ³öÏÖ£º
ÎÒÓÐÒ»¸öµ¥¶ÀµÄÈÝÆ÷º¬ÓÐEmacs°²×°»·¾³£¬»¹ÓÐÎÒϲ»¶ËæÊ±¿ÉÓÃµÄÆäËû¸÷ÖÖ¹¤¾ß¡£ÎÒÈÔÊÔͼ±£³Ö¾«¼ò£¬µ«ÎÊÌâÊÇ£¬Î񵀮ÁÄ»»á»°¿ÉÒÔפÁôÔÚÕâ¸öÈÝÆ÷ÖУ¬½áºÏÎÒÄÇ̨±Ê¼Ç±¾µçÄÔÉÏÉèÖõġ°autossh¡±£¬¼¸ºõ×ÜÊÇÓÐÒ»ÌõÁ¬½ÓÓëÈÝÆ÷ÏàÁ¬£¬ÄÇÑùÎҾͿÉÒÔ±à¼ÓëÎ񵀮äËû¿ª·¢ÈÝÆ÷¡°ÊµÊ±¡±¹²ÏíµÄ´úÂë¡£
ÔÚÕâ¸öÈÝÆ÷£¬ÎÒ»¹ÔÊÐíż¶û³ö´í£ºÖ±½Ó°²×°³ÌÐò°ü£¬ÒòΪËüÖ»Ó°Ïìµ÷ÊԺͿª·¢¡£
Ŀǰ£¬Ëü¿´ÆðÀ´ÈçÏ£º
FROM vidarh/devbase RUN apt-get update RUN apt-get -y install openssh-server emacs23-nox htop screen #ÓÃÓÚµ÷ÊÔ RUN apt-get -y install sudo wget curl telnet tcpdump # Õë¶Ô32λÊÔÑé RUN apt-get -y install gcc-multilib # ²Î¿¼ÊÖ²áÒ³ºÍ¡°most¡±viewer: RUN apt-get install -y man most RUN mkdir /var/run/sshd ENTRYPOINT /usr/sbin/sshd -D VOLUME ["/home"] EXPOSE 22 EXPOSE 8080 |
½áºÏ¹²Ïí¡°/ home¡°£¬Õâ¸øÁËÎÒÒ»¸ö×㹻ʵÓõÄСµØ·½¿ÉÒÔͨ¹ýsshÁ¬Èë¡£ÎÒÈ·ÐÅ£¬ÓÃËüÓõÃÔ½¶à£¬ÎһᲹ³äËü£¬µ«ÑÛÏÂËüÖ¤Ã÷ÍêÈ«ÄÜÂú×ãÎÒµÄÐèÒª¡£

4. ²»Í¬»·¾³Ï²âÊÔÈÝÆ÷
ÎÒÌØ±ðϲ»¶DockerµÄÒ»¸ö·½ÃæÊÇ£¬¿ÉÒÔÔÚ²»Í¬»·¾³ÏÂÇáËɲâÊÔ´úÂë¡£±ÈÈç˵£¬ÎÒÉý¼¶Ruby±àÒëÏîÄ¿ÒԱ㴦ÀíRuby
1.9(Ôç¾Í¸ÃÓÐÁË)ºó£¬´´½¨ÁËÕâ¸öССµÄDockerÎļþ£¬ºÃÈÃÎÒÔÚ½«Ö÷¿ª·¢»·¾³Ç¨ÒƵ½1.9Ö®ºó£¬ÔÚRuby
1.8»·¾³ÖÐÉú³ÉÒ»¸öÍâ¿Ç¡£
FROM vidarh/devbase RUN apt-get update RUN apt-get -y install ruby1.8 git ruby1.8-dev |
µ±È»£¬Äã¿ÉÒÔÓÃrbenvµÈ»ñµÃÀàËÆµÄЧ¹û¡£µ«ÎÒ×ÜÊǾõµÃÕâЩ¹¤¾ßºÜ·³ÈË£¬ÒòΪÎÒ¸üϲ»¶¾¡Á¿Ê¹Ó÷¢Ðаæ³ÌÐò°üÀ´²¿Êð£¬ÓÈÆäÊÇÓÉÓÚ£¬Èç¹ûÎÒÈ·±£Õâ˳Àû¿ªÕ¹£¬ËüÈÃÆäËûÈ˸üÈÝÒ×ʹÓÃÎҵĴúÂë¡£
ÓµÓÐÕâÑùÒ»¸öDockerÈÝÆ÷£ºµ±ÎÒÔÝʱÐèÒª²»Í¬µÄ»·¾³Ê±£¬Ö»ÒªÔËÐС°docker run¡±£¬Ô²ÂúµØ½â¾öÁËÕâ¸öÎÊÌ⣬¶øÇÒ»¹ÓÐÕâ¸öºÃ´¦£ºËü²¢²»ÊÜÖÆÓÚÏñRubyÕâÖÖÓÐÔ¤°ü×°×Ô¶¨Ò幤¾ßÀ´´¦Àí°æ±¾µÄ±à³ÌÓïÑÔ¡£
ÎÒ»¹¿ÉÒÔʹÓñê×¼ÐéÄâ»úÀ´´ïµ½Ä¿µÄ£¬µ«ÊÇ¿ÉÒÔÔڶ̵öàµÄʱ¼äÄÚÆô¶¯ÉÏÊödockerÈÝÆ÷¡£
5. ¹¹½¨ÈÝÆ÷
Èç½ñÎÒ±àдµÄ´úÂë´ó¶àÊÇÓýâÊÍÓïÑÔ±àдµÄ£¬µ«¼´Ê¹ÄÇÑù£¬»¹Êdz£³£»áÓÐʵÓõġ°¹¹½¨¡±(build)²½ÖèÐèÒª»¨ºÜ´óµÄ¿ªÏú£¬ÎÒÄþ¿É²»ÊÇÒ»Ö±Ö´ÐÐËüÃÇ¡£
Ò»¸öÀý×ÓÊÇΪRubyÓ¦ÓóÌÐòÔËÐС°À¦°ó¹¤¾ß¡±(bundler)¡£À¦°ó¹¤¾ß¿ÉΪRubygem¸üлº´æµÄÒÀÀµÏî(»¹¿ÉÊÓÇé¿ö¸üÐÂÈ«²¿µÄgemÎļþ£¬ÉõÖÁ¸üÐÂδ´ò°üµÄÄÚÈÝ)£¬Õë¶Ô½Ï´óµÄÓ¦ÓóÌÐòÔËÐÐÀ¦°ó¹¤¾ßÒª»¨Ò»¶Îʱ¼ä¡£
Ëü»¹³£³£ÐèÒªÓ¦ÓóÌÐòÔËÐÐʱ²¢²»ÐèÒªµÄÒÀÀµÏî¡£±ÈÈç˵£¬°²×°ÒÀÀµÔÉúÀ©Õ¹µÄgem³£³£ÒÀÀµÖÚ¶àµÄ³ÌÐò°ü¨D¨D³£³£Ã»ÓмǼµ½µ×ÊÇÄÄЩ³ÌÐò°ü£¬Í¨¹ý»ñÈ¡ËùÓеÄbuild-essential³ÌÐò°ü¼°ÆäÒÀÀµÏ¾Í¸üÈÝÒׯô¶¯¡£Óë´Ëͬʱ£¬ËäÈ»Äã¿ÉÒÔÊÂÏÈÈÃÀ¦°ó¹¤¾ß×öËùÓеŤ×÷£¬µ«ÎÒÕæµÄ²»ÏëÔÚÖ÷»ú»·¾³ÖÐÔËÐÐËü£¬Ö÷»ú»·¾³¿ÉÄÜÓëÈÝÆ÷¼æÈÝ£¬Ò²¿ÉÄܲ»¼æÈÝ¡£
Õâ·½ÃæµÄ½â¾ö°ì·¨¾ÍÊÇ´´½¨¹¹½¨ÈÝÆ÷¡£Èç¹ûÒÀÀµÏͬµÄ»°£¬Äã¿ÉÒÔ´´½¨µ¥¶ÀµÄDockerÎļþ£¬Ò²¿ÉÒÔÖØ¸´Ê¹ÓÃÖ÷Ó¦ÓóÌÐòDockerÎļþ£¬Ö»Òª¸²¸ÇÃüÁîÀ´ÔËÐÐÄãËùÐèÒªµÄ¹¹½¨ÃüÁî¡£±ÈÈç˵£¬DockerÎļþ¿´ÆðÀ´ÈçÏ£º
FROM myapp RUN apt-get update RUN apt-get install -y build-essential [assorted dev packages for libraries] VOLUME ["/build"] WORKDIR /build CMD ["bundler", "install","--path","vendor","--standalone"] |
È»ºó£¬Ö»ÒªÄã¸üÐÂÁËÒÀÀµÏ½«ÄãµÄbuild/sourceĿ¼¹ÒÔØµ½ÈÝÆ÷µÄ¡±build¡±Ä¿Â¼Ï£¬¾Í¿ÉÒÔÔËÐÐÕâ¶ÎÃüÁî¡£Ö»Òª¸ü»»ºÏÊʵÄÏî¾ÍÐС£
¹Ø¼üÔÚÓÚ£¬Äã¿ÉÒÔ½«Ó¦ÓóÌÐòµÄ¹¹½¨»òÕ߯äÒ»²¿·ÖÓë×îºóµÄ°ü×°·Ö¿ªÀ´£¬Í¬Ê±ÈÔ·â×°DockerÈÝÆ÷ÖеĽø³ÌºÍÒÀÀµÏֻҪ½«½ø³Ìϸ·Öµ½Á½¸ö»ò¶à¸öÈÝÆ÷ÖС£
6.°²×°ÈÝÆ÷
ÕâÖÖ·½·¨Ëä·ÇÎÒÔ´´£¬µ«È·ÊµÖµµÃÒ»Ìá¡£³öÉ«µÄnsenterºÍdocker-enter¹¤¾ßËæ´øÒ»¸ö°²×°Ñ¡ÏÕâÓëÁ÷Ðе쬵«ÓÖÁîÈËη¾åµÄ¡°curl
[ÄãÎÞ·¨¿ØÖƵÄij¸öURL] | bash¡±Ä£Ê½Ïà±ÈÊǸöºÜ´óµÄ½ø²½¡£Ëüͨ¹ýÌṩʵÏÖÉÏÊö¡°¹¹½¨ÈÝÆ÷¡±Ä£Ê½µÄDockerÈÝÆ÷À´×öµ½ÕâÒ»µã£¬²»¹ý¸ü½øÁËÒ»²½¡£ËüÖµµÃ¹Ø×¢¡£
ÕâÊÇDockerÎļþµÄ×îºó²¿·Ö£¬Ö®ºóÏÂÔØ²¢¹¹½¨ÁËÒ»¸öºÏÊʵÄnsenter°æ±¾(ÎÒÒªÌáÐѵÄÒ»µãÊÇ£¬¶ÔÏÂÔØÎĵµÃ»ÓнøÐÐÍêÕûÐÔ¼ì²é)£º
ADD installer /installer CMD /installer ¡°installer¡±¿´ÆðÀ´ÈçÏ£º #!/bin/sh if mountpoint -q /target; then echo "Installing nsenter to /target" cp /nsenter /target echo "Installing docker-enter to /target" cp /docker-enter /target else echo "/target is not a mountpoint." echo "You can either:" echo "- re-run this container with -v /usr/local/bin:/target" echo "- extract the nsenter binary (located at /nsenter)" fi |
ËäÈ»¶ñÒâ¹¥»÷ÕßÈÔÓпÉÄÜÆóͼÀûÓÃÈÝÆ÷¿ÉÄÜ´æÔÚµÄÌØÈ¨ÌáÉýÎÊÌâ´ó×öÊֽţ¬µ«Êǹ¥»÷·çÏÕÖÁÉÙҪСµÃ¶à¡£
µ«ÕâÖÖģʽ×î¿ÉÄÜÁ¢¼´ÎüÒýÎÒÃÇ´ó¶àÊýÈ˵ĵط½ÔÚÓÚ£¬±ÜÃâÁËÕâÒ»·çÏÕ£º±¾ÒâÁ¼ºÃµÄ¿ª·¢ÈËԱż¶ûÔÚ°²×°½Å±¾·½Ã淸ϺÜΣÏյĴíÎó¡£
ÎÒȷʵºÜϲ»¶ÕâÖÖ·½·¨¡£µ«Ô¸Ëü»áÓÐÖúÓÚ¼õÉÙ´ó¼Ò¶Ô¡°curl [something] | bash¡±µÄÑá¶ñ¸Ð(µ«¼´Ê¹Ã»ÓÐÆðµ½Õâ¸ö×÷Óã¬ÖÁÉÙÎÒÃÇ¿ÉÒÔÇáËÉ¿ØÖÆÈÝÆ÷ÀïÃæµÄ¶«Î÷)¡£
7. ºÐ×ÓÖÐĬÈÏ·þÎñÈÝÆ÷
Èç¹ûÎÒ¡°ÈÏÕæ¶Ô´ý¡±Ä³¸öÓ¦ÓóÌÐò£¬»á±È½ÏѸËÙµØ×¼±¸ºÃºÏÊʵÄÈÝÆ÷£¬Îª¿ª·¢ÏîÄ¿´¦ÀíÊý¾Ý¿âµÈ·þÎñ£¬µ«ÎÒ¾õµÃÓµÓÐһϵÁС°»ù±¾¡±µÄ»ù´¡ÉèÊ©ÈÝÆ÷·Ç³£ÖØÒª£¬ÎÒ¿ÉÒÔ½øÐкÏÊʵĵ÷Õû/¸Ä¶¯£¬¾ÍÄÜÆô¶¯ËùÑ¡ÔñµÄÊý¾Ý¿â£¬»òÕßËùÑ¡ÔñµÄÓкÏÊÊĬÈÏÉèÖõĶÓÁÐϵͳ¡£
µ±È»ÄãÒ²¿ÉÒÔ¡°»ù±¾ÉÏÈçÔ¸ÒÔ³¥¡±£¬Ö»ÒªÊÔÒ»ÊÔ¡°docker run [ij¸öÓ¦ÓóÌÐòÃû³Æ]¡±£¬Æíµ»DockerË÷ÒýÖÐÓÐÒ»¸ö³öÉ«µÄÌæ´úÕߣ¬¶øÇÒÕâ¸öÌæ´úÕß³£³£¾ÍÔÚË÷ÒýÖС£µ«ÎÒϲ»¶ÏÈÉó²é£¬±ÈÈçŪÇå³þËüÃÇÈçºÎ´¦ÀíÊý¾Ý£¬È»ºóÎÒ¸üÓпÉÄܽ«×Ô¼ºµÄÐÞ¸Äºó°æ±¾Ìí¼Óµ½×Ô¼ºµÄ¡°¿â¡±ÖС£
±ÈÈç˵£¬ÎÒÓÐÒ»¸öBeanstalkdµÄDockerÎļþ£º
FROM debian:wheezy ENV DEBIAN_FRONTEND noninteractive RUN apt-get -q update RUN apt-get -y install build-essential ADD http://github.com/kr/beanstalkd/archive/v1.9.tar.gz /tmp/ RUN cd /tmp && tar zxvf v1.9.tar.gz RUN cd /tmp/beanstalkd-1.9/ && make RUN cp /tmp/beanstalkd-1.9/beanstalkd /usr/local/bin/ EXPOSE 11300 CMD ["/usr/local/bin/beanstalkd","-n"] |
ÎÒµÄÄ¿±êÊÇÄܹ»¡°OK£¬ÎÒ½«ÐèÒªmemcached¡¢postgresºÍbeanstalk¡±£¬ÔËÐÐÈý¸ö¿ìËÙ¡°docker
run¡±ÃüÁîºó£¬»áÆô¶¯²¢ÔËÐÐÈý¸öÈÝÆ÷£¬ËüÃǶ¼Õë¶ÔÎҵĻ·¾³ºÍĬÈÏ»·¾³¸öÈËÆ«ºÃÒѾ¹ýÁ˸͝£¬ËæÊ±¿ÉÒÔʹÓá£ÉèÖá°±ê×¼¡±»ù´¡ÉèÊ©²¿¼þÓ¦¸ÃÖ»ÐèÒª1·ÖÖÓ£¬¶ø²»ÊÇÕ¼Óÿª·¢±¾ÉíµÄʱ¼ä¡£
8. »ù´¡ÉèÊ©/Õ³ºÏ¼ÁÈÝÆ÷
Ðí¶àÕâÖÖģʽרעÓÚ¿ª·¢»·¾³(ÕâÒâζ×ÅÉú²ú»·¾³·½Ã滹Óиü¶àÐèÒªÌÖÂÛµÄ)£¬µ«È±ÉÙÁËÒ»´óÀà±ð£ºÕ³ºÏ¼ÁÈÝÆ÷¡£
ÆäÄ¿µÄÊǰÑÄãµÄ»·¾³×éºÏ³ÉͳһÕûÌåµÄÈÝÆ÷¡£ÕâÊǵ½Ä¿Ç°ÎªÖ¹ÓдýÎÒ½øÒ»²½Ñо¿µÄÁìÓò£¬²»¹ýÎÒ»áÌáµ½Ò»¸öÌØ±ðµÄÀý×Ó£º
ΪÁËÄܹ»ÇáËÉ·ÃÎÊÎÒµÄÈÝÆ÷£¬ÎÒÓÐÒ»¸öССµÄhaproxyÈÝÆ÷¡£ÎÒÓÐÒ»¸öÖ¸ÏòÖ÷·þÎñÆ÷µÄͨÅä·ûDNSÏһ¸öiptableÏîÔÊÐí·ÃÎÊÎÒµÄhaproxyÈÝÆ÷¡£DockerÎļþÃ»Ê²Ã´ÌØ±ðÖ®´¦£º
FROM debian:wheezy ADD wheezy-backports.list /etc/apt/sources.list.d/ RUN apt-get update RUN apt-get -y install haproxy ADD haproxy.cfg /etc/haproxy/haproxy.cfg CMD ["haproxy", "-db", "-f", "/etc/haproxy/haproxy.cfg"] EXPOSE 80 EXPOSE 443 |
ÕâÀïÓÐȤµÄ²¿·ÖÊÇhaproxy.cfg£¬ËüÓÉÒ»¶Î´Ó¡°docker ps¡±µÄÊä³ö½á¹ûÉú³Éºó¶Ë²¿·Ö(¾ÍÏñÕâÀï)µÄ½Å±¾ºÍǰ¶Ë¶¨ÒåÖеÄÒ»ÅúaclsºÍuse_backendÓï¾ä¹²Í¬Éú³É£¬Ç°¶Ë¶¨Ò彫[hostname].mydomain·¢Ë͵½ÓұߵÄbackend.backend²âÊÔ¡£
backend test acl authok http_auth(adminusers) http-request auth realm Hokstad if !authok server s1 192.168.0.44:8084 |
Èç¹ûÎÒÏëÍæµã»¨Ñù£¬¿ÉÒÔ²¿ÊðÏñAirBnBµÄSynapseÕâÑùµÄ²úÆ·£¬µ«ËüÓµÓеÄÑ¡ÏîÊýÁ¿Ö®¶à³¬³öÁËÎÒ¶Ô¿ª·¢Ê¹ÓõÄÒªÇó¡£
¾ÍÎҵļÒÓû·¾³¶øÑÔ£¬ÕâÂú×ãÁËÎҵĴó¶àÊý»ù´¡ÉèʩҪÇó¡£ÎÒÈÔÔÚ²»¶ÏÍÆ³öÁËһϵÁлù´¡ÉèÊ©ÈÝÆ÷£¬ÆäÄ¿µÄÊÇÈÃʵ¼ÊÓ¦ÓóÌÐò²¿ÊðÆðÀ´Çá¶øÒ×¾Ù£¬¾ÍÏñÎÒ½«Ò»¸öÍêÕûµÄ˽ÓÐÔÆÏµÍ³ÏòDockerÇ¨ÒÆÄÇÑù¡£
|