使用Docker搭建自己的開發(fā)環(huán)境

實(shí)際開發(fā)環(huán)境

服務(wù)器系統(tǒng):ubuntu:14.04
web服務(wù)器:tomcat8
語言環(huán)境: jdk8
數(shù)據(jù)庫: mysql5.5

鏡像屬于 docker build的組件隅茎,主要使用Dockerfile來完成鏡像的上下文定義

創(chuàng)建OS系統(tǒng)鏡像

  1. mkdir -p dockerR/baseos 創(chuàng)建文件夾
  2. vim Dockerfile 創(chuàng)建打包文檔
  3. 編輯 Dockerfile
# Base os image
FROM ubuntu:14.04
MAINTAINER your_name <wangxunhg@gmail.com>
LABEL Description="This image is the base os images."  Version="1.0"
# reconfig timezone
RUN echo "Asia/Shanghai" > /etc/timezone \
    && dpkg-reconfigure -f noninteractive tzdata

說明:

  • 以#開頭的行為注釋肉微;
  • 第二行FROM關(guān)鍵字告訴docker我們的新鏡像基于哪個基礎(chǔ)鏡像纹份;
  • 第三行MAINTAINER關(guān)鍵字是維護(hù)者信息,可以修改為你的名字和郵箱地址;
  • 第四行LABEL Description是對鏡像的一個簡單說明钱慢,Version指明該鏡像的版本號茄菊,方便維護(hù)舶胀;
  • 第六行RUN關(guān)鍵字用于執(zhí)行一條命令。這里主要是修改系統(tǒng)的時區(qū)從標(biāo)準(zhǔn)UTC改為亞洲/上海网梢。
  1. 查看當(dāng)前鏡像
[root@bogon baseos]# docker images
REPOSITORY                                                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.cn-hangzhou.aliyuncs.com/ubuntu-14-04/ubuntu14.04   14.04               ba6d51835b6f        9 weeks ago         261.2 MB
centos                                                       6.6                 d0d663863c34        6 months ago        202.6 MB
registry.cn-hangzhou.aliyuncs.com/youdao/tomcat              latest              688b918e72d1        11 months ago       538.2 MB
  1. 編譯打包生成鏡像
    docker build -t example.com/baseos:1.0 .
[root@bogon baseos]# docker build -t example.com/baseos:1.0 .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM ba6d51835b6f
 ---> ba6d51835b6f
Step 1 : MAINTAINER your_name <wangxunhg@gmail.com>
 ---> Running in 4090fbf55855
 ---> d4498e75315c
Removing intermediate container 4090fbf55855
Step 2 : LABEL Description "This image is the base os images." Version "1.0"
 ---> Running in 9e4b30151ea3
 ---> 18292a807d21
Removing intermediate container 9e4b30151ea3
Step 3 : RUN echo "Asia/Shanghai" > /etc/timezone     && dpkg-reconfigure -f noninteractive tzdata
 ---> Running in 7d0d0183e3d5

Current default time zone: 'Asia/Shanghai'
Local time is now:      Fri Mar 17 15:53:00 CST 2017.
Universal Time is now:  Fri Mar 17 07:53:00 UTC 2017.

 ---> 722a042f9a90
Removing intermediate container 7d0d0183e3d5
Successfully built 722a042f9a90

創(chuàng)建jre鏡像環(huán)境震缭,繼承OS鏡像

  1. 將jre打成tar包
[root@bogon baseos]# cd /root/Program/jdk1.8.0_121
[root@bogon jdk1.8.0_121]# cp  -R jre/ jre_1.8.0_121/
[root@bogon jdk1.8.0_121]# tar -zcvf jre_1.8.0_121.tar.gz  jre_1.8.0_121/
[root@bogon jdk1.8.0_121]# mv jre_1.8.0_121.tar.gz ~/dockerR/jre1.8/
  1. 生成編輯Dockerfile文件
# Base jre image
FROM example.com/baseos:1.0
MAINTAINER your_name <wangxunhg@gmail.com>
LABEL Description="This image is used to serve Oracle jre 1.8"  Version="1.0"
# Install and config Oracle jre
ADD jre_1.8.0_121.tar.gz  /usr/lib/jvm/
RUN update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre_1.8.0_121/bin/java" 1 \
    && update-alternatives --set java /usr/lib/jvm/jre_1.8.0_121/bin/java
ENV JAVA_HOME /usr/lib/jvm/jre_1.8.0_121

說明:

  • 繼承example.com/baseos:1.0鏡像
  • ADD 相當(dāng)于COPY ,將jre_1.8.0_121.tar.gz復(fù)制到 鏡像/usr/lib/jvm/路徑下战虏。ADD與COPY不用點(diǎn):ADD會直接解壓文件拣宰。
  • ENV 設(shè)置環(huán)境變量
  1. 編輯Dockerfile文件
[root@bogon jre1.8]#  docker build -t example.com/jre:1.8 .
Sending build context to Docker daemon 73.58 MB
Sending build context to Docker daemon
Step 0 : FROM example.com/baseos:1.0
 ---> 722a042f9a90
Step 1 : MAINTAINER your_name <wangxunhg@gmail.com>
 ---> Running in 33573ed75b74
 ---> fbcf54e98056
Removing intermediate container 33573ed75b74
Step 2 : LABEL Description "This image is used to serve Oracle jre 1.8" Version "1.0"
 ---> Running in cd07f1143a40
 ---> 569abb36cfe0
Removing intermediate container cd07f1143a40
Step 3 : ADD jre_1.8.0_121.tar.gz /usr/lib/jvm/
 ---> 000c9eb92063
Removing intermediate container a1b6d96be327
Step 4 : RUN update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre_1.8.0_121/bin/java" 1     && update-alternatives --set java /usr/lib/jvm/jre_1.8.0_121/bin/java
 ---> Running in ed3b862d6ee0
update-alternatives: using /usr/lib/jvm/jre_1.8.0_121/bin/java to provide /usr/bin/java (java) in auto mode
 ---> fd5352198db9
Removing intermediate container ed3b862d6ee0
Step 5 : ENV JAVA_HOME /usr/lib/jvm/jre_1.8.0_121
 ---> Running in 8b60a54c8bc2
 ---> 8db750272289
Removing intermediate container 8b60a54c8bc2
Successfully built 8db750272289

創(chuàng)建Tomcat鏡像,繼承jre鏡像

  1. 將tomcat.tar放到文件夾中
  2. 創(chuàng)建Dockerfile文件
# Base image
FROM example.com/jre:1.8
MAINTAINER your_name <wangxunhg@gmail.com>
LABEL Description="This image is used to run tomcat8 with jre8."  Version="1.0"

ADD apache-tomcat-8.5.11.tar.gz  /var/lib/

ENV CATALINA_HOME /var/lib/apache-tomcat-8.5.11
ENV PATH $CATALINA_HOME/bin:$PATH
WORKDIR $CATALINA_HOME


EXPOSE 8080
CMD ["catalina.sh", "run"]

說明:

  • WORKDIR關(guān)鍵字定義了環(huán)境的工作目錄活烙,類似于Linux下的chroot徐裸。
  • EXPOSE關(guān)鍵字用于暴露容器中可用的端口,注意它并不能直接將端口映射到主機(jī)啸盏,你需要使用-p選項(xiàng)來指定重贺。
  • CMD關(guān)鍵字用來提供容器運(yùn)行時默認(rèn)執(zhí)行的命令。一個Dockerfile中只能有一個CMD,如果存在多個回懦,則只有最后一個會生效气笙。
  • 鏡像工作空間:/var/lib/tomcat8
  • 注意: 要讓一個容器保持運(yùn)行狀態(tài)而不退出,容器默認(rèn)執(zhí)行的命令需要在前臺運(yùn)行怯晕,而不是在后臺潜圃,這與我們通常在Linux環(huán)境下設(shè)置應(yīng)用在后臺運(yùn)行有所不同,如果你將容器中的應(yīng)用設(shè)置為后臺運(yùn)行的話舟茶,容器啟動完會立馬退出谭期。
  1. 編譯Dockerfile 文件
[root@bogon tomcat8]# docker build -t example.com/tomcat:8-jre8 .
Sending build context to Docker daemon 9.288 MB
Sending build context to Docker daemon
Step 0 : FROM example.com/jre:1.8
 ---> 8db750272289
Step 1 : MAINTAINER your_name <wangxunhg@gmail.com>
 ---> Running in a18253d2a9fe
 ---> 8b9c5cdf6873
Removing intermediate container a18253d2a9fe
Step 2 : LABEL Description "This image is used to run tomcat8 with jre8." Version "1.0"
 ---> Running in 83c9d84ba9ce
 ---> 0c400b40a0c3
Removing intermediate container 83c9d84ba9ce
Step 3 : ADD apache-tomcat-8.5.11.tar.gz /var/lib/
 ---> faae7356fb45
Removing intermediate container 6a518d1f3cd7
Step 4 : ENV CATALINA_HOME /var/lib/apache-tomcat-8.5.11
 ---> Running in 166c6d6fbd22
 ---> 19a746023a59
Removing intermediate container 166c6d6fbd22
Step 5 : ENV PATH $CATALINA_HOME/bin:$PATH
 ---> Running in 62fc0f4a416b
 ---> f88efffee71b
Removing intermediate container 62fc0f4a416b
Step 6 : WORKDIR $CATALINA_HOME
 ---> Running in 650459f28ad9
 ---> 4888813839d4
Removing intermediate container 650459f28ad9
Step 7 : EXPOSE 8080
 ---> Running in dca27c95faaf
 ---> 0bdbf5a24bab
Removing intermediate container dca27c95faaf
Step 8 : CMD catalina.sh run
 ---> Running in b3dd900e4e2c
 ---> 090a3128a888
Removing intermediate container b3dd900e4e2c
Successfully built 090a3128a888
  1. 啟動容器
docker run -d --name mytomcat1 -p 9988:8080 example.com/tomcat:8-jre8

![Upload Paste_Image.png failed. Please try again.]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吧凉,隨后出現(xiàn)的幾起案子隧出,更是在濱河造成了極大的恐慌,老刑警劉巖阀捅,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胀瞪,死亡現(xiàn)場離奇詭異,居然都是意外死亡饲鄙,警方通過查閱死者的電腦和手機(jī)凄诞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門圆雁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帆谍,你說我怎么就攤上這事伪朽。” “怎么了既忆?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵驱负,是天一觀的道長。 經(jīng)常有香客問我患雇,道長跃脊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任苛吱,我火速辦了婚禮酪术,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翠储。我一直安慰自己绘雁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布援所。 她就那樣靜靜地躺著庐舟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪住拭。 梳的紋絲不亂的頭發(fā)上挪略,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音滔岳,去河邊找鬼杠娱。 笑死,一個胖子當(dāng)著我的面吹牛谱煤,可吹牛的內(nèi)容都是我干的摊求。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼刘离,長吁一口氣:“原來是場噩夢啊……” “哼室叉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硫惕,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤太惠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疲憋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梁只,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年缚柳,在試婚紗的時候發(fā)現(xiàn)自己被綠了埃脏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡秋忙,死狀恐怖彩掐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灰追,我是刑警寧澤堵幽,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站弹澎,受9級特大地震影響朴下,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苦蒿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一殴胧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佩迟,春花似錦团滥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秉溉,卻和暖如春力惯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坚嗜。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工夯膀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苍蔬。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓诱建,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碟绑。 傳聞我的和親對象是個殘疾皇子俺猿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,514評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一格仲、Docker 簡介 Docke...
    極客圈閱讀 10,481評論 0 120
  • 一押袍、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,382評論 0 27
  • 今天來到縣城給姑姑家?guī)兔Γ瑥脑缟暇透杏X熱的很凯肋,上個廁所一頭水谊惭,大汗淋漓,到了中午感覺16℃的空調(diào)都沒有多大作用...
    控衛(wèi)閱讀 279評論 0 1
  • 基本思想 每一次從待排序的序列中找出最小或最大的那一個,然后存放在序列的起始位置圈盔,然后繼續(xù)找第二小或第二大的那一個...
    心_的方向閱讀 209評論 0 0