<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                如果有人已經將hg server的image做好了,那么我還要自己作嗎?答案是拿來用吧。 #### 一、安裝 用hg為關鍵詞搜索,得出以下結果: ~~~ $?docker?search?hg?? NAME??????????????????????????????DESCRIPTION?????????????????????????????????????STARS?????OFFICIAL???AUTOMATED?? hgomez/gatling????????????????????????????????????????????????????????????????????1????????????????????[OK]?? v7soft/hgdns??????????????????????????????????????????????????????????????????????0????????????????????[OK]?? hg8496/gridvis-service????????????????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-myjenkins-lts???????????????????????????????????????????????????0????????????????????[OK]?? jrandall/hgi-project??????????????????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-myartifactory???????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-myjenkins???????????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-mynexus?????????????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-myarchiva???????????????????????????????????????????????????????0????????????????????[OK]?? hg8496/piwigo?????????????????????????????????????????????????????????????????????0????????????????????[OK]?? hg8496/apache?????????????????????????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-mygitblit???????????????????????????????????????????????????????0????????????????????[OK]?? hgomez/di-centos6-mygitbucket?????????????????????????????????????????????????????0????????????????????[OK]?? jyotisingh/ubuntu-hg??????????????????????????????????????????????????????????????0?????????????????????? hg8496/dokuwiki???????????????????????????????????????????????????????????????????0????????????????????[OK]?? hg8496/owncloud???????????????????????????????????????????????????????????????????0????????????????????[OK]?? misshie/ucsc-blat-hg19????????????????????????????????????????????????????????????0????????????????????[OK]?? ussie/hg-exec?????????????????????adds?mercurial?to?ubuntu:14.04.?????????????????0?????????????????????? misshie/ucsc-blat-hg38????????????????????????????????????????????????????????????0????????????????????[OK]?? hg8496/gridvis-pc?????????????????????????????????????????????????????????????????0????????????????????[OK]?? ???????????Test.?Automated?builds?for?this?repo?are?b...???0????????????????????[OK]?? hg8496/rsync??????????????????????????????????????????????????????????????????????0????????????????????[OK]?? secondbit/hgbundler???????????????????????????????????????????????????????????????0?????????????????????? uotbw/hgamer3d????????????????????Docker?image?for?hgamer3d,?see?www.hgamer3...???0?????????????????????? hgomez/di-centos6-base????????????????????????????????????????????????????????????0????????????????????[OK]?? ~~~ hgweb貌似不錯的選擇,在github上的主頁是https://github.com/amclain/docker-hgweb 。 將其pull下來,在漫長的等待中我也在思考著如何啟動它。 主頁上提供了它的Dockerfile,通過它我們就可以了解這個image是如果構造的。先來說說什么是Dockerfile。 #### 二、Dockerfile 它是用戶創建自定義鏡像的文件。它通常分為四部分:基礎鏡像信息,維護者信息,鏡像操作指令和容器啟動時的指令。 ~~~ #基礎系統信息,基于ubuntu?14.04構建的?? FROM?ubuntu:14.04?? MAINTAINER?Alex?McLain??? RUN?apt-get?-qq?update?? #安裝apache、hg、php5?? RUN?apt-get?-y?install?apache2?apache2-utils?curl?mercurial?php5?php5-cli?php5-mcrypt?? #?TODO:?Remove?? #是的,vim確實很大,不安裝為好?? RUN?apt-get?-y?install?vim?? RUN?echo?"colorscheme?delek"?>?~/.vimrc?? #?Configure?hgweb?? ADD?hg/add.php?/etc/default/hgweb/hg/?? ADD?hg/hgweb.config?/etc/default/hgweb/hg/?? ADD?hg/hgweb.cgi?/etc/default/hgweb/hg/?? ADD?hg/hgusers?/etc/default/hgweb/hg/?? #?Configure?Apache?? ADD?apache/hg.conf?/etc/default/hgweb/apache/?? RUN?rm?/etc/apache2/sites-enabled/*?? RUN?a2enmod?rewrite?&&?a2enmod?cgi?? ADD?load-default-scripts?/bin/?? RUN?chmod?u+x?/bin/load-default-scripts?? #創建一個掛載點,本機或其他容器可以將其掛載。啟動時用-v參數進行掛載?? VOLUME?/var/hg?? VOLUME?/etc/apache2/sites-available?? #暴露的端口號,啟動時要通過-p參數指定?? EXPOSE?80?? #啟動時執行的命令?? CMD?load-default-scripts?&&?service?apache2?start?&&?/bin/bash?? ~~~ #### 三、啟動 有了上述的背景,我們知道啟動時要做兩件事:指定端口號、掛載本地目錄。 比如還是使用端口號80,那么只需用 -p 80:80即可。 比如本機目錄hg-repos用來做hg repo的放置目錄,只需 -v /home/linc/hg-repos:/var/hg/repos 掛載即可。 另外,我們還要將其啟動在后臺(Daemonized),加上-d參數。 完整啟動命令如下: ` docker?run?-idt?-p?80:80?-v?/home/linc/hg-repos:/var/hg/repos?amclain/hgweb??` #### 四、與后臺容器交互 **1.attach方法** docker 自帶attach命令,但此命令的不方便之處在于,多個窗口(同時attach此容器)會同步顯示操作,并且當一個窗口exit時,所有窗口都會退出,后臺運行的容器也停止了。 ~~~ $?docker?ps?? CONTAINER?ID????????IMAGE???????????????????????????COMMAND????????????????CREATED?????????????STATUS??????????????PORTS??????????????????NAMES?? b22cc1880b7a????????amclain/hgweb:latest????????????"/bin/sh?-c?'load-de???3?hours?ago?????????Up?3?hours??????????0.0.0.0:80->80/tcp?????high_almeida???? ?? $?docker?attach?b22cc1880b7a?? root@b22cc1880b7a:/#??? ~~~ **2.nsenter** 此工具需要從源碼安裝: ~~~ $?cd?/tmp;?curl?https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz?|?tar?-zxf-;?cd?util-linux-2.24;?? $?./configure?--without-ncurses?? $?make?nsenter?&&?sudo?cp?nsenter?/usr/local/bin?? ~~~ 直接用nsenter命令交互很繁瑣,然后有人寫了配置文件放到bashrc中,就可以方便的使用了。 ~~~ #docker?? export?DOCKER_HOST=tcp://localhost:4243?? alias?docker-pid="sudo?docker?inspect?--format?'{{.State.Pid}}'"?? alias?docker-ip="sudo?docker?inspect?--format?'{{?.NetworkSettings.IPAddress?}}'"?? ?? #the?implementation?refs?from?https://github.com/jpetazzo/nsenter/blob/master/docker-enter?? function?docker-enter()?{?? ????if?[?-e?$(dirname?"$0")/nsenter?];?then?? ????????#?with?boot2docker,?nsenter?is?not?in?the?PATH?but?it?is?in?the?same?folder?? ????????NSENTER=$(dirname?"$0")/nsenter?? ????else?? ????????NSENTER=nsenter?? ????fi?? ????[?-z?"$NSENTER"?]?&&?echo?"WARN?Cannot?find?nsenter"?&&?return?? ?? ????if?[?-z?"$1"?];?then?? ????????echo?"Usage:?`basename?"$0"`?CONTAINER?[COMMAND?[ARG]...]"?? ????????echo?""?? ????????echo?"Enters?the?Docker?CONTAINER?and?executes?the?specified?COMMAND."?? ????????echo?"If?COMMAND?is?not?specified,?runs?an?interactive?shell?in?CONTAINER."?? ????else?? ????????PID=$(sudo?docker?inspect?--format?"{{.State.Pid}}"?"$1")?? ????????if?[?-z?"$PID"?];?then?? ????????????echo?"WARN?Cannot?find?the?given?container"?? ????????????return?? ????????fi?? ????????shift?? ?? ????????OPTS="--target?$PID?--mount?--uts?--ipc?--net?--pid"?? ?? ????????if?[?-z?"$1"?];?then?? ????????????#?No?command?given.?? ????????????#?Use?su?to?clear?all?host?environment?variables?except?for?TERM,?? ????????????#?initialize?the?environment?variables?HOME,?SHELL,?USER,?LOGNAME,?PATH,?? ????????????#?and?start?a?login?shell.?? ????????????#sudo?$NSENTER?"$OPTS"?su?-?root?? ????????????sudo?$NSENTER?--target?$PID?--mount?--uts?--ipc?--net?--pid?su?-?root?? ????????else?? ????????????#?Use?env?to?clear?all?host?environment?variables.?? ????????????sudo?$NSENTER?--target?$PID?--mount?--uts?--ipc?--net?--pid?env?-i?$@?? ????????fi?? ????fi?? }?? ~~~ 其中有兩個alias和一個function,使用docker-enter會很容易于容器交互并沒有attach中的副作用。如下: ~~~ $?docker?ps?? CONTAINER?ID????????IMAGE???????????????????????????COMMAND????????????????CREATED?????????????STATUS??????????????PORTS??????????????????NAMES?? beb178cd9335????????amclain/hgweb:latest????????????"/bin/sh?-c?'load-de???11?seconds?ago??????Up?10?seconds???????0.0.0.0:80->80/tcp?????stoic_yonath???????????? ?? $?docker-enter?beb178cd9335?? root@beb178cd9335:~#?ls?? root@beb178cd9335:~#?pwd?? /root?? ~~~ #### 五、快速啟動hg-server 咱也寫個alias放子bashrc中,如下: ` alias?docker-load-hg-server="sudo?docker?run?-idt?-p?80:80?-v?/home/linc/hg-repos:/var/hg/repos?amclain/hgweb"??` 啟動它: ~~~ $?docker-load-hg-server??? [sudo]?password?for?linc:??? beb178cd933502970fd12d9a4babecef5475a52d85a207066c665b4a620c5a62?? ~~~ **改進** 對于文件的掛載,其實直接掛鏡像的/var/hg更好,這樣里面的幾個配置文件如hgusers? hgweb.cgi? hgweb.config,我們可以直接進行配置。 ~~~ sudo?docker?run?-idt?-p?80:80?-v?/home/linc/hg-repos:/var/hg?amclain/hgweb ? ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看