一、使用 Docker 搭建 Tomcat 運行環境
1 Docker與虛擬機
2 搭建過程
2.1 準備宿主系統
準備一個 CentOS 7操作系統,具體要求如下:
必須是 64 位操作系統
建議內核在 3.8 以上
通過以下命令查看您的 CentOS 內核:
# uname -r
2.2 安裝Docker
# yum install docker
可使用以下命令,查看 Docker 是否安裝成功:
# docker version
若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啓動 Docker 服務:
# systemctl start docker.service
一旦 Docker 服務啓動完畢,就可以開始使用 Docker 了。
2.3 下載鏡像
以 CentOS 爲例,下載一個 CentOS 的鏡像:
# docker pull centos:7.2.1511
下載完成後,使用命令查看本地鏡像列表:
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos 7.2.1511 83ee614b834e 9 weeks ago 194.6 MB
2.4 啓動容器
容器是在鏡像的基礎上來運行的,一旦容器啓動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。
本例中,所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
#pwd
/root/software
#ls
apache-tomcat-7.0.54.tar.gz jdk-7u65-linux-x64.gz
使用以下命令即可啓動容器:
#docker run -it -v /root/software/:/mnt/software/ 鏡像 /bin/bash
命令包含以下三個部分:
docker run <相關參數> <鏡像ID> <初始命令>
其中,相關參數包括:
-i:表示以“交互模式”運行容器
-t:表示容器啓動後會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
初始命令表示一旦容器啓動,需要運行的命令,此時使用“/bin/bash”,表示啓動後直接進入bash shell。
2.5 安裝軟件
爲了搭建 Java Web 運行環境,需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。本例中,選擇/opt/目錄作爲安裝目錄,首先需要通過cd /opt/命令進入該目錄。
2.5.1 安裝JDK
首先,解壓 JDK 程序包:
# tar -zxf /mnt/software/jdk-7u65-linux-x64.gz
然後,移動 JDK 目錄:
# mv jdk1.7.0_65/ /opt/jdk/
2.5.2 安裝Tomcat
首先,解壓Tomcat程序包:
# tar -zxf /mnt/software/aapache-tomcat-7.0.54.tar.gz
然後,移動Tomcat目錄:
# mv apache-tomcat-7.0.54/ /opt/tomcat/
2.5.3 編寫運行腳本
編寫一個運行腳本,當啓動容器時,運行該腳本,啓動 Tomcat。
首先,創建運行腳本:
# touch /root/run.sh
# vi /root/run.sh
然後,編輯腳本內容如下:
#!/bin/bash
export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH
sh /opt/tomcat/bin/catalina.sh run
最後,爲運行腳本添加執行權限:
# chmod u+x /root/run.sh
2.6 退出容器
當以上步驟全部完成後,可使用exit命令,退出容器。
隨後,可使用如下命令查看正在運行的容器:
# docker ps
此時,應該看不到任何正在運行的程序,因爲剛纔已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令查看所有容器:
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
02bebc3f546a 83ee614b834e "/bin/bash" 12 minutes ago Exited (0) 7 seconds ago
記住以上CONTAINER ID(容器 ID),隨後將通過該容器,創建一個可運行 Tomcat 鏡像。
2.7 創建Tomcat鏡像
使用以下命令,根據某個“容器 ID”來創建一個新的“鏡像”:
# docker commit 02bebc3f546a centos7:tomcat7
65c88ec597e04812ec3b06b7749578bebcae3aa3d735b565ed25db6818d9d7f3
#docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos7 tomcat7 65c88ec597e0 About a minute ago 514.4 MB
docker.io/centos 7.2.1511 83ee614b834e 9 weeks ago 194.6 MB
該容器的ID是02bebc3f546a,所創建的鏡像名是“m centos7:tomcat7”,隨後可使用鏡像來啓動Tomcat容器。
2.8 啓動Tomcat容器
首先,新建/root/webapps/ROOT目錄,並在該目錄下創建一個index.html文件,文件內容如下:
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
正如上面所描述的那樣,可以通過“鏡像名”或“鏡像 ID”來啓動容器,與上次啓動容器不同的是,現在不再進入容器的命令行,而是直接啓動容器內部的 Tomcat 服務。此時,需要使用以下命令:
#docker run -d -p 8080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name tomcat7 centos7:tomcat7 /root/run.sh
其中,相關參數包括:
-d:表示以“守護模式”執行/root/run.sh腳本,此時 Tomcat 控制檯不會出現在輸出終端上。
-p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射爲宿主機的 8080 端口,這樣就向外界暴露了 8080 端口,可通過 Docker 網橋來訪問容器內部的 8080 端口了。
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
--name:表示容器名稱,用一個有意義的名稱命名即可。
在瀏覽器中,輸入宿主IP和端口號,即可訪問 Tomcat:
注:192.168.53.5是宿主機的ip地址
2.9 最終示意圖:
至此搭建容器的tomcat環境成功
2.10 停止Tomcat容器
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
f23598b6544d mytomcat:1.0 "/root/run.sh" 6 minutes ago Up 6 minutes
# docker stop f23598b6544d
2.11 移除容器
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
f23598b6544d mytomcat:1.0 "/root/run.sh" 8 minutes ago Exited (137)
#docker rm f235
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
二、docker應用案例:
對於中小企業來說,搭建paas沒有那個精力,也沒那個必要,中小企業可以用docker來標準化開發、測試、生產環境。
畫了簡單的圖:
docker佔用資源小,在一臺E5 128G內存的服務器服務器上部署100個容器都綽綽有餘,可以單獨抽一個容器或則直接在宿主物理主機上部署samba,利用samba的home分享方案將每個用戶的home目錄映射到開發中心和測試部門的windows機器上。可以針對項目組,由架構師搭建好一個標準的容器環境供項目組和測試部門使用,每個開發工程師可以擁有自己單獨的容器,通過docker run -v 將用戶的home目錄映射到容器中。需要提交測試時,只需要將代碼移交給測試部門,然後分配一個容器使用-v 加載測試部門的home目錄啓動即可。這樣,在公司內部的開發、測試基本就統一了,不會出現開發提交的代碼,測試部門部署不了的問題。
測試發佈測試通過的報告後,架構師再一次檢測容器環境,就可以直接交由部署工程師將代碼和容器分別部署到生產環境中了。
1、構建一個標準的tomcat容器環境,例如上面知點中用docker commit生成的centos7:tomcat7容器鏡像
2、在宿主機上搭建samba環境
安裝samba(centos 7/redhat 7提供的samba版本是samba 4)
開機啓動, 啓動服務
查看監聽端口(使用netstat或ss命令查看連接狀態)
防火牆放行
給開發工程師、測試工程師、部署工程師創建samba賬號
Samba默認是共享samba用戶的宿主目錄的
在所建用戶的宿主目錄下創建ROOT目錄,該目錄下用於存放開發部門的jsp代碼。
將開發工程師用戶的home目錄映射到開發工程師的windows主機上
創建開發工程師所需要的容器,將/home/kaifa目錄掛載到容器的/opt/tomcat/webapps/目錄
test.jsp內容如下: