Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下廣泛使用,是開發和調試 JSP 程序的首選。
Tomcat 最初是由 Sun 的軟件構架師詹姆斯·鄧肯·戴維森開發的。後來在他的幫助下 Tomcat 成爲開源項目,並由 Sun 貢獻給 Apache 軟件基金會。
當配置正確時,Apache 爲 HTML 頁面服務,而 Tomcat 實際上運行 JSP 頁面和 Servlet。
另外,Tomcat 和 IIS 等 Web 服務器同樣,具備處理 HTML 頁面的功能(但處理靜態 HTML 的能力不如 Apache ),另外它仍是一個 Servlet 和 JSP 容器,獨立的 Servlet 容器是 Tomcat 的默認模式。docker
首先,嘗試在 Dockerhub 上搜索 Tomcat 相關鏡像:apache
[root@gavin /]# sudo docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomcat is an open source implementati… 2511 [OK] tomee Apache TomEE is an all-Apache Java EE certif… 66 [OK] dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 53 [OK] bitnami/tomcat Bitnami Tomcat Docker Image 29 [OK] kubeguide/tomcat-app Tomcat image for Chapter 1 27 ...
能夠看到,搜索出不少 Tomcat 鏡像。如是我的開發或測試,能夠隨意選擇一個鏡像,按照提示啓動應用便可。若準備在生產環境中使用,這些鏡像都不是那麼合適了。緣由有三個方面:ubuntu
所以,比較好的方式應該是由架構師經過 Dockerfile 或者其餘方式構建好統一的鏡像,而後分發給項目組全部成員來進行。
下面以 jdk1.8.0_15一、apache-tomcat-8.0.3三、ubuntu 18.04 爲環境介紹如何定製本身的tomcat鏡像。瀏覽器
建立 tomcat8.0_jdk1.8 文件夾,下載或複製本地 apache-tomcat-8.0.33 和 jdk1.8.0_151 到 tomcat8.0_jdk1.8 文件夾下。tomcat
建立 Dockerfile 和 run.sh 文件到 tomcat8.0_jdk1.8 文件夾下。bash
操做完成後,tomcat8.0_jdk1.8 目錄下應以下所示:服務器
[root@gavin tomcat8.0_jdk1.8]# ls apache-tomcat-8.0.33 Dockerfile jdk1.8.0_151 run.sh
Dockerfile 文件內容以下:架構
# 設置繼承鏡像 FROM sshd:ubuntu # 提供一些做者信息 MAINTAINER from gavin_g@qq.com # 更改系統時區 RUN echo "Asia/Shanghai" > /etc/timezone # 設置環境變量 ENV CATALINA_HOME /apache-tomcat-8.0.33 ENV JAVA_HOME /jdk1.8.0_151 ENV JRE_HOME /jdk1.8.0_151/jre # 複製 apache-tomcat-8.0.33 和 jdk1.8.0_151 到鏡像中 ADD /tomcat8.0_jdk1.8/apache-tomcat-8.0.33 /apache-tomcat-8.0.33 ADD /tomcat8.0_jdk1.8/jdk1.8.0_151 /jdk1.8.0_151 ADD run.sh /run.sh RUN chmod +x /*.sh # 設置端口 EXPOSE 8080 # 設置執行命令 CMD ["/run.sh"]
run.sh 文件內容以下:併發
#!/bin/bash
exec ${CATALINA_HOME}/bin/catalina.sh run
經過下面命令建立 tomcat:8.0:jdk1.8:app
[root@gavin tomcat8.0_jdk1.8]# sudo docker build -t tomcat8.0:jdk1.8 . Sending build context to Docker daemon 399.8MB Step 1/12 : FROM sshd:ubuntu ---> b5fd094edfac Step 2/12 : MAINTAINER from gavin_g@qq.com ---> Using cache ---> 99b9f44c09a8 Step 3/12 : RUN echo "Asia/Shanghai" > /etc/timezone ---> Using cache ---> 52ce09b10a07 Step 4/12 : ENV CATALINA_HOME /apache-tomcat-8.0.33 ---> Using cache ---> 4d60b29cc0c0 Step 5/12 : ENV JAVA_HOME /jdk1.8.0_151 ---> Using cache ---> 72d0aaff4cdd Step 6/12 : ENV JRE_HOME /jdk1.8.0_151/jre ---> Using cache ---> 21cbc3180b88 Step 7/12 : ADD /apache-tomcat-8.0.33 /apache-tomcat-8.0.33 ---> 175b6557530b Step 8/12 : ADD /jdk1.8.0_151 /jdk1.8.0_151 ---> 63e83b6f2485 Step 9/12 : ADD run.sh /run.sh ---> b8500320f86d Step 10/12 : RUN chmod +x /*.sh ---> Running in c9e512da7154 Removing intermediate container c9e512da7154 ---> 5aff4ec4e94b Step 11/12 : EXPOSE 8080 ---> Running in 5fa306a6f963 Removing intermediate container 5fa306a6f963 ---> 1ea225879aa3 Step 12/12 : CMD ["/run.sh"] ---> Running in 5b146a2f5146 Removing intermediate container 5b146a2f5146 ---> a3bfe60dbc1d Successfully built a3bfe60dbc1d Successfully tagged tomcat8.0:jdk1.8
查看目前本地擁有的鏡像:
[root@gavin tomcat8.0_jdk1.8]# sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat8.0 jdk1.8 a3bfe60dbc1d 59 seconds ago 641MB
啓動一個 Tomcat 容器進行測試:
[root@gavin tomcat8.0_jdk1.8]# sudo docker run -d -p 8080:8080 tomcat8.0:jdk1.8 3c369a248684f235e44cbe1472293e9399fc98c84a094c8dbcb46e3bc2f94d80
查看容器信息:
[root@gavin tomcat8.0_jdk1.8]# sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c369a248684 tomcat8.0:jdk1.8 "/run.sh" 12 seconds ago Up 10 seconds 0.0.0.0:8080->8080/tcp reverent_feynman
在本地使用瀏覽器訪問 Tomcat 頁面 http://192.168.41.15:8080/:
在實際環境中,能夠經過使用 -v 參數來掛載 Tomcat 的日誌文件、程序所在目錄、以及與 Tomcat 相關的配置。
這篇文章是我學習 Docker 的記錄,內容參考自《Docker技術入門與實戰》