<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    聶永的博客

    記錄工作/學(xué)習(xí)的點點滴滴。

    Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境

    前言

    在第一篇文字中,我們完全人工方式,一個命令一個命令輸入,實現(xiàn)一個java tomcat運行環(huán)境,雖然也初見成效,但很累人。如果依靠依靠腳本構(gòu)建一個Tomcat容器實例,一個命令可以搞定,何樂而不為呢。好在Docker提供了Dockerfile作為構(gòu)建Docker鏡像腳本,避免人們一行一行的輸入,真是善莫大焉。Dockerfile腳本可以做到隨時維護修改,即可以分享,更有利于在模板化,更不用說傳輸了,好處那是一大籮筐!

    最終目的:打造一個支持SSH終端登錄、Tomcat7自動運行的Docker鏡像。

    編寫一個Dockerfile

    所有環(huán)境,同第一篇文字。在ubuntu下安裝好vim之后(吐槽一下,ubuntu系統(tǒng)內(nèi)置vi命令十分難用,只好求助于vim ):

    sudo vim Dockerfile
    

    編輯一個Dockerfile文件了,下面就是具體文件內(nèi)容:

    # VERSION 0.0.1
    # 默認(rèn)ubuntu server長期支持版本,當(dāng)前是12.04
    FROM ubuntu
    # 簽名啦
    MAINTAINER yongboy "yongboy@gmail.com"

    # 更新源,安裝ssh server RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list RUN apt-get update RUN apt-get install -y openssh-server RUN mkdir -p /var/run/sshd
    # 設(shè)置root ssh遠(yuǎn)程登錄密碼為123456 RUN echo "root:123456" | chpasswd

    # 添加orache java7源,一次性安裝vim,wget,curl,java7,tomcat7等必備軟件 RUN apt-get install python-software-properties RUN add-apt-repository ppa:webupd8team/java RUN apt-get update RUN apt-get install -y vim wget curl oracle-java7-installer tomcat7
    # 設(shè)置JAVA_HOME環(huán)境變量 RUN update-alternatives --display java RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle">> /etc/environment RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle">> /etc/default/tomcat7
    # 容器需要開放SSH 22端口 EXPOSE 22
    # 容器需要開放Tomcat 8080端口 EXPOSE 8080
    # 設(shè)置Tomcat7初始化運行,SSH終端服務(wù)器作為后臺運行 ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D

    需要注意:

    1. ENTRYPOINT,表示鏡像在初始化時需要執(zhí)行的命令,不可被重寫覆蓋,需謹(jǐn)記
    2. CMD,表示鏡像運行默認(rèn)參數(shù),可被重寫覆蓋
    3. ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一個生效 多個存在,只有最后一個生效,其它無效!
    4. 需要初始化運行多個命令,彼此之間可以使用 && 隔開,但最后一個須要為無限運行的命令,需切記!

    ENTRYPOINT/CMD,一般兩者可以配合使用,比如:

    ENTRYPOINT ["/usr/sbin/sshd"]
    CMD ["-D"]
    

    在Docker daemon模式下,無論你是使用ENTRYPOINT,還是CMD,最后的命令,一定要是當(dāng)前進程需要一直運行的,才能夠防容器退出。

    以下無效方式:

     ENTRYPOINT service tomcat7 start #運行幾秒鐘之后,容器就會退出
     CMD service tomcat7 start #運行幾秒鐘之后,容器就會退出
    

    這樣有效:

    ENTRYPOINT service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
    # 或者
    CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
    

    這樣也有效:

     ENTRYPOINT ["/usr/sbin/sshd"]
     CMD ["-D"]
    

    具體請參考官方文檔:Dockerfiles for Images

    構(gòu)建鏡像

    腳本寫好了,需要轉(zhuǎn)換成鏡像:

    docker build -t yongboy/java7 .
    

    -t: 為構(gòu)建的鏡像制定一個標(biāo)簽,便于記憶/索引等

    . : 指定Dockerfile文件在當(dāng)前目錄下

    網(wǎng)速不太好,會等待很長時間。很多操作可能需要科學(xué)上網(wǎng),逼得我只能一直掛著VPN,方能暢通無阻。

    構(gòu)建鏡像完成之后,看看運行效果:

    docker run -d -p 22 -p 8080:8080 yongboy/java7
    

    在運行命令中,還得需要顯式指定 -p 22 -p 8080:8080,否則在Docker 0.8.1版本中不會主動映射到宿主機上。據(jù)悉在Docker 0.4.8版本時,就不擔(dān)心這個問題。 或者,您要有好的方式,不妨告知于我,謝謝。

    在Dockerfile中,若沒有使用ENTRYPOINT/CMD指令,若運行多個命令,可以這樣做:

    docker run -d -p 22 -p 8080 yongboy/java7 /bin/sh -c "service tomcat7 start && /usr/sbin/sshd -D"

    提交/保存鏡像

    創(chuàng)建好的鏡像,可以保存到索引倉庫中,便于下次使用(當(dāng)然,我們直接共享Dockerfile,是最簡單的事情,:)) ),但畢竟鏡像可以做到開箱即用。

    1. https://index.docker.io/ 注冊一個賬號,例如yongboy
    2. 構(gòu)建鏡像

      docker build -t yongboy/java7 .
      

      上面已經(jīng)構(gòu)建OK的話,可省略此步。

    3. 登陸

      docker login
      
    4. 提交到Docker索引倉庫

      docker push yongboy/java7
      

      現(xiàn)在可以起來喝杯熱水,出去溜達會,也不一定能夠上傳完畢,那叫一個慢啊!

      上傳OK的話,可以得到類似地址:https://index.docker.io/u/yongboy/java7/

    5. 如何使用鏡像

      docker pull yongboy/java7
      

      剩下的步驟,就很簡單了。

    小結(jié)

    有關(guān)Dockerfile的進階閱讀:

    以上蜻蜓點水一般,更多細(xì)節(jié),請閱讀官方文檔。 若有空,在下篇中,討論一下Docker的一些機制等。 嗯,最近失業(yè)了,您如有心,可以幫忙推薦一下,謝謝。

    posted on 2013-12-16 15:50 nieyong 閱讀(46884) 評論(7)  編輯  收藏 所屬分類: 容器

    評論

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境 2014-07-15 23:07 3927

    樓主寫了這么多辛苦了,最后一段告訴我,就是說,只要我pull 你的鏡像就可以得到一個完整的tomcat運行環(huán)境對吧,嘻嘻  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境 2014-08-01 12:21 endle

    可以把 Dockerfile 放到 github/bitbucket 里,然后在 docker 里選擇 autobuild,這樣就不用上傳了  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境[未登錄] 2014-11-14 16:45 michael

    build 失敗是怎么回事  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境 2015-01-28 16:38 肥仔

    該行命令漏了 -y
    RUN apt-get install python-software-properties  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境 2015-03-05 09:40 盧not

    @肥仔
    命令中RUN add-apt-repository ppa:webupd8team/java怎么有問題,我的是ubuntu13.10  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境 2016-05-16 18:18 xawi2000

    @盧not
    加上這句:
    RUN apt-get install -y software-properties-common  回復(fù)  更多評論   

    # re: Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運行環(huán)境[未登錄] 2016-05-28 18:54 sam

    自己折騰一翻, 看到到此文:比較全面,好些內(nèi)容受教  回復(fù)  更多評論   

    公告

    所有文章皆為原創(chuàng),若轉(zhuǎn)載請標(biāo)明出處,謝謝~

    新浪微博,歡迎關(guān)注:

    導(dǎo)航

    <2016年5月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統(tǒng)計

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99热这里只有精品6免费| 亚洲最新视频在线观看| a级毛片免费完整视频| 亚洲av中文无码字幕色不卡 | 任你躁在线精品免费| 一级毛片免费视频网站| 亚洲精品无码专区久久| 亚洲av永久无码精品网址| 国产亚洲精品影视在线| 一本色道久久88亚洲精品综合| 亚洲最大在线视频| 亚洲国产精品专区| 亚洲国产精品综合久久久| 一级毛片正片免费视频手机看| 日本高清不卡中文字幕免费| 七次郎成人免费线路视频| 久草视频在线免费| 波多野结衣免费在线观看| 我的小后妈韩剧在线看免费高清版| 99久久久国产精品免费牛牛四川 | 老妇激情毛片免费| 男女交性无遮挡免费视频| 免费观看黄色的网站| 国产成人亚洲综合无码精品| 国产亚洲真人做受在线观看| 日本亚洲成高清一区二区三区| 亚洲色大成网站www久久九| 98精品全国免费观看视频| 久久亚洲色一区二区三区| 亚洲美女又黄又爽在线观看| 亚洲毛片基地日韩毛片基地| 精品亚洲456在线播放| 蜜臀98精品国产免费观看| 免费黄网在线观看| 国产人妖ts在线观看免费视频| 亚洲男人第一无码aⅴ网站 | 国产精品自在自线免费观看| 久久激情亚洲精品无码?V | 亚洲五月午夜免费在线视频| 嫩草在线视频www免费观看| 久久久久久久免费视频|