示例:把一個簡單的 Java Web 應用---MyBank 進行容器化。git
它包含了 Java 源代碼、JSP文件、圖片和 CSS 等靜態資源文件。github
MyBank 的項目結構是基於 Maven 的要求部署,經過 Maven 能夠編譯和構建 MyBank 的部署包---WAR包。web
和其它的應用程序同樣,MyBank 在開發過程當中,它的因此在源代碼都被上傳到配置管理庫進行版本控制,這裏所使用的配置管理服務器是 GitHub。docker
1. 安裝部署源代碼工具 Git.瀏覽器
# yum -y install git
2.從 GitHub 上下載示例的 Java 應用源代碼。tomcat
[root@master ~]# cd /opt/ [root@master opt]# git clone https://github.com/nichochen/mybank-demo-maven
3.準備編譯和構建環境。安裝應用構建所需的Java開發工具包 JDK 及構建工具 Mavenbash
# yum -y install maven
4.經過構建工具編譯及構建應用。服務器
# cd mybank-demo-maven/ [root@master mybank-demo-maven]# mvn package
構建完畢,將在 target 目錄下生成一個 WAR 包 ROOT.war.app
# ls target/ classes maven-archiver ROOT ROOT.war surefire surefire-reports test-classes
5.選擇知足應用運行要求的基礎容器鏡像,或者從基礎的操做系統鏡像開始安裝和構建。webapp
# docker pull tomcat:7.0.70-jre7-alpine
6.編寫 Dockerfile 。把構建好的應用部署包拷貝到發佈目錄。Dockerfile示例以下:
# cat Dockerfile FROM tomcat:7.0.70-jre7-alpine ADD ./target/ROOT.war /usr/local/tomcat/webapps/mybank.war
7.執行 Docker Build 構建鏡像。把鏡像命命爲 mybank-tomcat。在沒有指定鏡像的 tag 的請求下,默認的標籤爲 latest。
# docker build -t mybank-tomcatbank-tomcat .
構建完後,能夠看見 Docker Build 生成的新鏡像
# docker images | grep mybank-tomcat mybank-tomcat latest 0a46e831b130 2 days ago 150 MB
8.測試鏡像。經過 docker run 命令測試新建立的鏡像。參數 -p 8080:8080 把容器的 8080端口映射到主機的 8080端口。
# docker run -it --rm -p 8080:8080 mybank-tomcat
完成後經過瀏覽器訪問 MyBank 的主頁測試。
# oc get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-openshift ClusterIP 172.30.242.25 <none> 8080/TCP,8888/TCP 3d
9.推送鏡像。測試經過後,將把鏡像發佈到相應的鏡像倉庫中。
# docker tag mybank-tomcat:latest 192.168.100.133:5000/mybank-tomcat:latest # docker push 192.168.100.133:5000/mybank-tomcat:latest