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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
°ËÖÖ×î³£¼ûDocker¿ª·¢Ä£Ê½ ±ð˵Ä㻹²»ÖªµÀ
 
À´Ô´£º51CTO ·¢²¼ÓÚ 2015-04-07
  2026  次浏览      28
 

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Ç¨ÒÆÄÇÑù¡£

   
2026 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ