1. 程式人生 > >docker 簡單創建一個tomcat服務

docker 簡單創建一個tomcat服務

之前 pull 是否 當前 hang home 12c 解壓 blog

上一篇已經介紹了docker相關的基本命令,這篇我們來詳細介紹下通過docker如何創建一個toncat應用容器。
方法一:
如果不想自己搭建tomcat應用容器的話,可以直接在Docker Hub上直接search tomcat ,如下圖:
docker search tomcat
技術分享圖片
可以看到有好多的內容,如果搜索結果顯示有相關鏡像,則可以直接通過 docker pull tomcat 來下載 tomcat鏡像。
docker pull tomcat
技術分享圖片
當提示下載完畢時,我們可以通過docker images 查看本地是否已經有了該鏡像
docker images
技術分享圖片
此時已經顯示本地已經有了tomcat相關鏡像
這時,我們可以通過docker run 命令來啟動該服務:
docker run 命令後面可以跟很多參數主要參數有以下幾種:

  1. -d 後臺模式啟動
  2. -i 標準輸出
  3. -t 為虛擬終端
  4. -p 端口映射 是指本地端口與容器發布服務端口的一對一映射
  5. -P 隨機端口映射 是只隨機找一個端口與容器發布服務的端口映射
  6. --name 給容器起別名
  7. --net 選擇網絡模式
  8. --restart 設置該容器是否在docker服務啟動時自動啟動
  9. -v 掛在本地文件或者數據卷
    我們先通過docker run --name test1 -p 22222:8080 -it tomcat:latest 啟動一個前臺的tomcat容器
    docker run --name test1 -p 22222:8080 -it tomcat:latest
    技術分享圖片
    通過圖片可以發現tomcat服務已經啟動成功了,我的虛擬機的ip地址是172.16.1.58我們試著通過業務訪問一下。
    技術分享圖片
    此時tomcat已經正常可用了。我們可以看到通過docker hub提供的鏡像啟動的tomcat的版本是8.5,如果我需要使用其他版本的tomcat該怎麽辦呢??此時可以通過dockerfile文件創建自己想安裝版本的tomcat,那需要如何實現呢?
    方法二:(dockerfile文件版)
    所謂通過dockerfile文件創建一個應用容器,我個人認為就是通過將一套特定的變量規則編寫在文件內,讓程序可以識別並正確執行下去,具體如何創建的,請參考代碼:
    創建一個tomcat_dockerfile文件,並寫入一下內容

#Base image
FROM centos:7 定義自己創建系統需要的底層鏡像文件

MAINTAINER

MAINTAINER [email protected] 作者說明
RUN yum install epel-release -y 安裝相關插件
RUN yum install net-tools wget supervisor -y 安裝相關插件
WORKDIR /web/ 設置容器工作的目錄
RUN \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改容器的顯示時間,不該時間會顯示不準確
RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.11/bin/apache-tomcat-9.0.11.tar.gz 下載9版本的tomcat 到容器中
RUN tar zxf apache-tomcat-9.0.11.tar.gz 解壓壓縮包
RUN rm apache-tomcat-9.0.11.tar.gz -rf 刪除壓縮包
RUN mv apache-tomcat-9.0.11 tomcat 將tomcat壓縮包改名

RUN echo ‘[program:tomcat]‘ >> /etc/supervisord.d/tomcat.ini 創建supervisor監控tomcat的配置文件
RUN echo ‘command= /web/tomcat/bin/catalina.sh run ‘ >> /etc/supervisord.d/tomcat.ini
RUN echo ‘ autostart=true‘ >> /etc/supervisord.d/tomcat.ini
RUN echo ‘ autorestart=unexpected‘ >> /etc/supervisord.d/tomcat.ini
COPY jdk-8u181-linux-x64.tar.gz /web/ 從本地往容器中拷入jdk
RUN tar zxf jdk-8u181-linux-x64.tar.gz 解壓jdk
RUN mv jdk1.8.0_181 java 給jdk改名
RUN rm -rf jdk-8u181-linux-x64.tar.gz 刪除jdk壓縮文件包
ENV JAVA_HOME /web/java 設置jdj的環境變量
ENV CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 8080 發布此容器開發的端口
ENTRYPOINT ["supervisord","-n",-c","/etc/supervisord.conf"] 容器啟動後運行的默認命令
寫好以上dockefile文件後 可以通過 docker build 命令生成相關的鏡像文件,需要註意的是 在通過build創建鏡像時,建議單獨建立一個文件夾 將鏡像所需要的所有內容均拷貝至該文件夾內進行操作,不要再根目錄操作不然生成的鏡像會攜帶大量無用的文件。
docker build -f tomcat_dockerfile -t tomcat-test:9 ./
-f 代表是通過指定的dickerfile文件來創建鏡像
-t 代表創建好的鏡像的名稱和標簽
./ 代表是當前目錄 ,創建文件中強烈建議在需要創建的當前目錄進行操作。
技術分享圖片
當提示鏡像創建成功時,我們可以通過docker images 來查看是否已經生成鏡像
技術分享圖片
通過圖片說明我們已經成功生成了一個鏡像文件
此時可以已後臺的方式利用創建好的鏡像啟動一個容器
docker run --name test2 -dp 33333:8080 tomcat_test:9 ,創建完畢後可以通過docker images查看是否成功
技術分享圖片
此時容器已經創建成功,可以通過web進行訪問
技術分享圖片
通過瀏覽器我們可以清楚的看到tomcat已經啟動,至此方法二已經講解完畢
方法三:
這種方法類似於常規的系統中的tomcat安裝,我們需要先從docker hub上下載已經tomcat的基礎鏡像並通過這個鏡像創建一個容器後,我們直接在容器內進行tomcat的安裝。
創建鏡像的命令是 docker run -ti --name tomcat centos:latest ,通過這條命令可以創建容器並進入容器,然後可以在容器裏面根據正常tomcat安裝的步驟進行安裝,待安裝完畢後通過exit退出容器,並用以下命令生成鏡像
docker commit + 容器名 +要生成鏡像名稱:標簽 即可生成鏡像。
需要特別註意的是強烈不介意通過這種方式生成鏡像,個人建議通過第二中方法來生成鏡像,至於為何不建議通過此種方法生成鏡像,已經在之前的docker 常用命令一文中說明,此處就不再進行說明了。

docker 簡單創建一個tomcat服務