天天看點

制作【CentOs+tomcat7+jdk8】鏡像

制作 CentOs+tomcat7+jdk8 鏡像

前提說明:

一般公司使用的鏡像:

1、需要長期使用的,是以Dockerfile檔案,要寫清楚版本号,不能下載下傳 <font color=#0000FF size=4>latest</font> 版本,不然長時間使用,可能會因為長期使用,導緻版本更新了出現一些不必要的問題。

2、看具體生産情況,我們目前是在銀行做項目,肯定是沒有外網的,是以tomcat、jdk的安裝檔案,也是提前下載下傳好的。(也可以聯網制作鏡像,然後把鏡像考到行裡,為了避免出現一些連結不到的情況,是以我都提前下載下傳好了)

3、制作中鏡像,一般的想法是盡量做的小,本文介紹的制作方式,鏡像還是比較大的,大約700M,基本插件都是在的,比如vi這些常用的,避免出現特殊情況,還需要重新制作,不能立刻修改處理。

-- <font color=#F00000 size=3>注:本文使用到的檔案,在說明中,也會提供下載下傳位址。</font>

簡要說明

三步制作鏡像
- 1)準備安裝所需要的安裝包
    - 2)編寫Dockerfile檔案
    - 3)執行腳本
           
第一步、完成第一個鏡像 its-image-base:1.0
将jdk、tomcat都打進去,便于後續搭建服務使用。
           

檔案目錄說明:

- Dockerfile                    //docker build 需要的檔案
- apache-tomcat-7.0.34.tar.gz   //tomcat安裝包
- jdk-8u60-linux-x64.tar.gz     //jdk安裝包
           

注:三個檔案是在一個目錄下的[詳細介紹會寫下載下傳位址]

第二步、編寫Dockerfile檔案

##下載下傳centos7鏡像
FROM centos:7.4.1708

##作者
MAINTAINER Will [email protected]

#安裝 en_US.UTF-8 并配置環境
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

##安裝jdk
RUN mkdir /usr/soft
RUN mkdir /usr/local/jdk
COPY jdk-8u60-linux-x64.tar.gz /usr/soft/jdk-8u60-linux-x64.tar.gz
RUN tar xvf /usr/soft/jdk-8u60-linux-x64.tar.gz -C /usr/local/jdk
RUN rm -rf /usr/soft/jdk-8u60-linux-x64.tar.gz

##安裝tomcat
RUN mkdir -p /usr/local/work/tomcat
COPY apache-tomcat-7.0.34.tar.gz  /usr/soft/apache-tomcat-7.0.34.tar.gz 
RUN tar xvf /usr/soft/apache-tomcat-7.0.34.tar.gz  -C /usr/local/work/tomcat
RUN rm -rf /usr/soft/apache-tomcat-7.0.34.tar.gz

##設定環境變量
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_60
ENV CATALINA_HOME /usr/local/work/tomcat/apache-tomcat-7.0.34
ENV PATH $PATH:$JAVA_HOME/bin:$CATCHA_HOME/bin

##打包項目拷貝到tomcat webapps目錄中
##COPY xxx /usr/local/work/tomcat/apache-tomcat-7.0.34/webapps


##内部開啟服務端口
EXPOSE 8080

##最後啟動sshd程序,防止容器啟動後就不見了
##CMD /usr/sbin/sshd -D
CMD ["./usr/local/work/tomcat/apache-tomcat-7.0.34/bin/catalina.sh", "run"]
           

第三步、執行build指令:

docker build --rm=true --no-cache=false -t its-image-base:1.0 .
           
傳回結果:
[root@izuf6efkun6biw8x0tdeydz CentOS7.4]# docker build --rm=true --no-cache=false -t its_image_base:171115 .
Sending build context to Docker daemon    189MB
Step 1/16 : FROM centos:7.4.1708
 ---> 3afd47092a0e
Step 2/16 : MAINTAINER Will [email protected]
 ---> Using cache
 ---> bcde7f2a7f89
Step 3/16 : RUN mkdir /usr/soft
 ---> Running in b3760402c706
 ---> e78be80366c4
Removing intermediate container b3760402c706
Step 4/16 : RUN mkdir /usr/local/jdk
 ---> Running in e904a339f965
 ---> c85a25c43ca6
Removing intermediate container e904a339f965
Step 5/16 : COPY jdk-8u60-linux-x64.tar.gz /usr/soft/jdk-8u60-linux-x64.tar.gz
 ---> 00e05bd13316
Step 6/16 : RUN tar xvf /usr/soft/jdk-8u60-linux-x64.tar.gz -C /usr/local/jdk
 ---> Running in 8b95161b11e5
jdk1.8.0_60/
jdk1.8.0_60/README.html
jdk1.8.0_60/LICENSE
.................................... 中間省略
jdk1.8.0_60/bin/jcontrol
jdk1.8.0_60/release
 ---> 5302ec82de5d
Removing intermediate container 8b95161b11e5
Step 7/16 : RUN rm -rf /usr/soft/jdk-8u60-linux-x64.tar.gz
 ---> Running in 5c147c99ba07
 ---> ca5c3664f5d3
Removing intermediate container 5c147c99ba07
Step 8/16 : RUN mkdir -p /usr/local/work/tomcat
 ---> Running in 095f3c015534
 ---> f665a406b46f
Removing intermediate container 095f3c015534
Step 9/16 : COPY apache-tomcat-7.0.34.tar.gz /usr/soft/apache-tomcat-7.0.34.tar.gz
 ---> 94c2caaf0fd1
Step 10/16 : RUN tar xvf /usr/soft/apache-tomcat-7.0.34.tar.gz  -C /usr/local/work/tomcat
 ---> Running in 743b8f89a87f
apache-tomcat-7.0.34/bin/catalina.sh
.................................... 中間省略
apache-tomcat-7.0.34/webapps/manager/images/tomcat.gif
apache-tomcat-7.0.34/webapps/manager/images/update.gif
apache-tomcat-7.0.34/webapps/manager/images/void.gif
apache-tomcat-7.0.34/webapps/manager/index.jsp
apache-tomcat-7.0.34/webapps/manager/status.xsd
apache-tomcat-7.0.34/webapps/manager/xform.xsl
 ---> 508590dc6ce6
Removing intermediate container aee8a6eb745f
Step 11/16 : RUN rm -rf /usr/soft/apache-tomcat-7.0.34.tar.gz
 ---> Running in 56b281cc8c73
 ---> 9f7a8d02d11a
Removing intermediate container 56b281cc8c73
Step 12/16 : ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_60
 ---> Running in af6836a76936
 ---> 3e64a4ecf3ea
Removing intermediate container af6836a76936
Step 13/16 : ENV CATALINA_HOME /usr/local/work/tomcat/apache-tomcat-7.0.34
 ---> Running in dccc74c761a4
 ---> 21999848f7e1
Removing intermediate container dccc74c761a4
Step 14/16 : ENV PATH $PATH:$JAVA_HOME/bin:$CATCHA_HOME/bin
 ---> Running in 5b10add2a0a0
 ---> 84f885a6449c
Removing intermediate container 5b10add2a0a0
Step 15/16 : EXPOSE 8080
 ---> Running in 950e90710fcd
 ---> 95a33c3ab873
Removing intermediate container 950e90710fcd
Step 16/16 : CMD ./usr/local/work/tomcat/apache-tomcat-7.0.34/bin/catalina.sh run
 ---> Running in c8cd844cbfe9
 ---> a4c75a448942
Removing intermediate container c8cd844cbfe9
Successfully built a4c75a448942
Successfully tagged its-image-base:1.0
[root@izuf6efkun6biw8x0tdeydz CentOS7.4]#
           

第四步、檢視鏡像:

docker images
           

結果:

REPOSITORY           TAG           IMAGE ID           CREATED             SIZE
its-image-base      1.0           a4c75a448942      13 seconds ago        762MB
           

<font color=#FF6F5A size=4>鏡像制作完成</font>

接下來對于上面的内容,做詳細說明。

詳細說明:

1)、下載下傳centos7鏡像
FROM centos:7.4.1708
           

下載下傳一個指定版本的centos,這裡選型為centos7.4.1709

鏡像來源:

https://hub.docker.com/_/centos/
2)、作者
MAINTAINER Will [email protected]
           

編輯作者

3)、安裝jdk
1 RUN mkdir /usr/soft
2 RUN mkdir /usr/local/jdk
3 COPY jdk-8u60-linux-x64.tar.gz /usr/soft/jdk-8u60-linux-x64.tar.gz
4 RUN tar xvf /usr/soft/jdk-8u60-linux-x64.tar.gz -C /usr/local/jdk
5 RUN rm -rf /usr/soft/jdk-8u60-linux-x64.tar.gz
           

1、建立一個檔案夾/usr/soft,專門存放安裝包。

2、建立一個檔案夾/usr/local/jdk ,存放jdk

3、拷貝本地的jdk[注意路徑是相對路徑,我的jdk-8u60-linux-x64.tar.gz 和 Dockerfile檔案時放在同級的],拷貝到制定的位置

4、運作解壓縮指令,到jdk安裝的路徑下。

5、将安裝删除。

jdk8下載下傳位址:

http://tomcat-55416.oss-cn-hangzhou.aliyuncs.com/jdk-8u60-linux-x64.tar.gz
4)、安裝tomcat
1 RUN mkdir -p /usr/local/work/tomcat
2 COPY apache-tomcat-7.0.34.tar.gz  /usr/soft/apache-tomcat-7.0.34.tar.gz 
3 RUN tar xvf /usr/soft/apache-tomcat-7.0.34.tar.gz  -C /usr/local/work/tomcat
4 RUN rm -rf /usr/soft/apache-tomcat-7.0.34.tar.gz
           

1、建立存放tomcat的工作目錄 , -p的意思是建立多集目錄。

2、将本地的tomcat壓縮包,拷貝到指定的位置上。

3、運作解壓縮指令,解壓到建立的tomcat工作目錄上

4、删除安裝包

tomcat7下載下傳位址:

http://tomcat-55416.oss-cn-hangzhou.aliyuncs.com/apache-tomcat-7.0.34.tar.gz
5)設定環境變量
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_60
ENV CATALINA_HOME /usr/local/work/tomcat/apache-tomcat-7.0.34
ENV PATH $PATH:$JAVA_HOME/bin:$CATCHA_HOME/bin
           

配置環境變量,JAVA_HOME\CATALINA_HOME\PATH

6)、打包項目拷貝到tomcat webapps目錄中
##COPY xxx /usr/local/work/tomcat/apache-tomcat-7.0.34/webapps
           

如果需要把war包一同打進去,可以使用COPY指令,直接完成。

  • 這裡我沒有這麼做,因為我這個是基礎鏡像,提供給很多應用使用,避免每次搭建centos+tomcat+jdk環境,是以先建立這個基礎鏡像。
  • 如果直接把war包放進去,有會一個問題,每次啟動,他都會重新讀取war,如果中途修改了某些檔案,會導緻不能儲存,建議也和安裝JDK、tomcat的方式一樣,先到臨時目錄下,然後解壓到webapps工作目錄下。
7)、内部開啟服務端口
EXPOSE 8080
           

内部開啟服務端口。關于docker網絡,是一片很長的文章,這裡不展開說。詳情請看我的關于docker網絡的文章

8)、最後啟動sshd程序,防止容器啟動後就不見了,或者啟動tomcat
##CMD /usr/sbin/sshd -D
CMD ["./usr/local/work/tomcat/apache-tomcat-7.0.34/bin/catalina.sh", "run"]
           

Dockerfile CMD 指令,啟動tomcat服務

9)、build指令解釋:
docker build --rm=true --no-cache=false -t its-image-base:1.0 .
           

docker build

編譯

--rm=true

: 表示建構成功後,移除所有中間容器

--no-cache=false

: 表示在建構過程中不使用緩存,如果建立多個鏡像,上一個鏡像的緩存會影響到。

-t its-image-base:1.0

: 建立鏡像名稱

.

表示目前目錄