Docker-利用dockerfile來(lái)搭建tomcat服務(wù)

在前面的例子中,我們從下載鏡像,啟動(dòng)容器,在容器中輸入命令來(lái)運(yùn)行程序,這些命令都是手工一條條往里輸入的,無(wú)法重復(fù)利用,而且效率很低。所以就需要一 種文件或腳本,我們把想執(zhí)行的操作以命令的方式寫(xiě)入其中,然后讓docker讀取并分析、執(zhí)行,那么重復(fù)構(gòu)建、更新將變得很方便,所以Dockerfile就此誕生了。

常用參數(shù):

FROM命令。用法,F(xiàn)ROM?<image>:<tag>。FROM命令告訴docker我們構(gòu)建的鏡像是以哪個(gè)(發(fā)行版)鏡像為基礎(chǔ)的

RUN命令。用法RUN?<command>。RUN 后面接要執(zhí)行的命令,比如,我們想在鏡像中安裝vim,只需在Dockfile中寫(xiě)入RUN yum install -y vim

ENV命令。用法,ENV??<value>。ENV命令主要用于設(shè)置容器運(yùn)行時(shí)的環(huán)境變量

ADD命令。用法,ADD??<dest>。ADD主要用于將宿主機(jī)中的文件添加到鏡像中

首先建一個(gè)目錄構(gòu)建我們的環(huán)境。

mkdirtest/web

上傳tomcat和jdk到該目錄下。

[root@wls12c web]$lsapache-tomcat-7.0.70.tar.gz? jdk-7u80-linux-x64.tar.gz

編輯Dockerfile

vim Dockerfile

#pull down centos image

FROM centos

MAINTAINER test@test.com

#copy jdk and tomcat into image

ADD ./apache-tomcat-7.0.70.tar.gz /root

ADD ./jdk-7u80-linux-x64.tar.gz /root

#set environment variable

ENV JAVA_HOME /root/jdk1.7.0_80

ENV PATH $JAVA_HOME/bin:$PATH#defineentry point which will be run first when the container starts upENTRYPOINT /root/apache-tomcat-7.0.70/bin/startup.sh&&tail-F /root/apache-tomcat-7.0.70/logs/catalina.out

構(gòu)建鏡像

[root@wls12c web]$ docker build -t keven/centos:tomcat-centos --rm=true .

Sending build context to Docker daemon 470.4 MB

Sending build context to Docker daemon

Step 0 : FROM centos

---> d83a55af4e75

Step 1 : MAINTAINER test@test.com

---> Runningin 955747d64da5

---> 1619dc8f6d58

................70/logs/catalina.out

---> Runningin fe48acf12d70

---> 52076383f11b

Removing intermediate container fe48acf12d70

Successfully built 52076383f11b

-t選擇指定生成鏡像的用戶(hù)名,倉(cāng)庫(kù)名和tag

--rm=true指定在生成鏡像過(guò)程中刪除中間產(chǎn)生的臨時(shí)容器。

查看新產(chǎn)生的鏡像

[root@wls12c web]$ docker images keven/centos

REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? VIRTUAL SIZE

keven/centos? ? ? ? tomcat-centos? ? ? 52076383f11b19minutes ago516.6MB

運(yùn)行鏡像

[root@wls12c web]$ docker run -d -p8090:808052078260fa22aa32126f613a6b64f121e78545ceae01da58c61396968bfafeda3706

-p指定主機(jī)8090端口與容器8080端口進(jìn)行綁定

-d?指定容器運(yùn)行后與當(dāng)前tty分離,后臺(tái)運(yùn)行

5207是鏡像的ID前4位。

通過(guò)? http://宿主機(jī)IP:8090,即可看見(jiàn)我們熟悉的tomcat首頁(yè)了。

另外還有一種自動(dòng)映射主機(jī)端口的啟動(dòng)方法

[root@wls12c web]$ docker run -d -p8080--name myweb520de39869a8c560e5e0cf48fc6022c05ed9f9a145bdafb897767fa468dc24ebfff

[root@wls12c web]$ docker port de38080/tcp ->0.0.0.0:32768[root@wls12c web]$

這樣就要通過(guò)http://宿主機(jī)IP:32768訪(fǎng)問(wèn)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.Docker簡(jiǎn)介 1.1 什么是虛擬化 在計(jì)算機(jī)中,虛擬化(英語(yǔ):Virtualization)是一種資源管理...
    EdwinGates閱讀 1,904評(píng)論 0 0
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 8,998評(píng)論 1 21
  • Docker 學(xué)習(xí)目標(biāo): 掌握Docker基礎(chǔ)知識(shí),能夠理解Docker鏡像與容器的概念 完成Docker安裝與啟...
    執(zhí)筆夢(mèng)一場(chǎng)閱讀 3,510評(píng)論 2 10
  • 五、Docker 端口映射 無(wú)論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪(fǎng)問(wèn)不到的。此外,除了...
    R_X閱讀 1,954評(píng)論 0 7
  • 2019.08.18 晴 親子日記18篇 今天,開(kāi)心問(wèn)了一個(gè)問(wèn)題,媽媽?zhuān)沂悄闵鰜?lái)的嗎?是的,你是媽媽...
    紫薔薇_041f閱讀 359評(píng)論 6 6

友情鏈接更多精彩內(nèi)容