使用背景
- 環境差異需要:屏蔽不同操作系統及OS不同版本帶來的安裝差異;
- 做持續集成需要:做CI/CD的時候,從源碼服務器下載代碼,本地構建出目標版本后,需要自動打包成容器鏡像用于部署;
構建環境
- 宿主操作系統:使用VirtualBox在MAC上虛擬的一個Ubuntu操作系統 Ubuntu16.04 LTS版本
- Docker Server Version :18.03.1-ce
構建目標
- 目標:基于ubuntu原始鏡像構建jdk+tomcat的應用環境
- 軟件版本
- jdk版本:jdk-8u171-linux-x64.tar.gz
- jdk下載地址:http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-i586.tar.gz
- tomcat版本:apache-tomcat-8.5.31.tar
- tomcat下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz
- 小提示:jdk8最好使用tomcat8版本進行搭配,否則容易出現編譯失敗的問題
構建腳本及過程
- 先創建一個目錄docker-tomcat
-
目錄內容參考下圖
image.png - 必須的文件說明
jdk-8u171-linux-x64.tar.gz:用于拷貝到目標鏡像中使用;
apache-tomcat-8.5.31.tar.gz:用于拷貝到目標鏡像中使用;
tomcat7.sh:用于拷貝到目標鏡像中使用;
Dockerfile:用于構建鏡像; - 非必須文件說明
jdk1.8.0_171:用于驗證解壓縮jdk-8u171-linux-x64.tar.gz的命令,及解壓縮后的文件目錄結構;
apache-tomcat-8.5.31:用于驗證解壓縮apache-tomcat-8.5.31.tar.gz的命令,及解壓縮后的文件目錄結構;
- 編寫構建的Dockerfile
名字必須是“Dockerfile”
-
Dockerfile文件內容參考如下
image.png -
Dockerfile依賴的tomcat7.sh參考如下
image.png 小提示
在windows或者網頁上拷貝的腳本代碼可能在鏡像中無法執行,需要現在ubuntu操作系統中完成dos2unix的文件格式轉換。
- 構建mytomcat鏡像
-
先切換到docker-tomcat目錄,在docker控制臺執行命令(注意后邊有一個. ,表示當前目錄):
docker build -t mytomcat .
image.png 查看構建出的鏡像:
docker images
- 部署鏡像啟動容器
-
命令行
docker run -i -t -p 5000:8080 mytomcat
image.png 命令行說明
其中,docker run 用于運行一個容器
-t 在容器指定一個偽終端或者終端;
-i 進行命令交互;
-p 匹配鏡像內的網絡端口號,即我們可以通過宿主機中訪問5000端口來達到訪問容器8080端口的目的。
- 驗證效果
-
通過瀏覽器查看
image.png