示例:把一个简单的 Java Web 应用---MyBank 进行容器化。

它包含了 Java 源代码、JSP文件、图片和 CSS 等静态资源文件。

MyBank 的项目结构是基于 Maven 的要求部署,通过 Maven 可以编译和构建 MyBank 的部署包---WAR包。

和其它的应用程序一样,MyBank 在开发过程中,它的所以在源代码都被上传到配置管理库进行版本控制,这里所使用的配置管理服务器是 GitHub。

1. 安装部署源代码工具 Git.

# yum -y install git

2.从 GitHub 上下载示例的 Java 应用源代码。

[root@master ~]# cd /opt/
[root@master opt]# git clone https://github.com/nichochen/mybank-demo-maven

3.准备编译和构建环境。安装应用构建所需的Java开发工具包 JDK 及构建工具 Maven

# yum -y install maven

4.通过构建工具编译及构建应用。

# cd mybank-demo-maven/
[root@master mybank-demo-maven]# mvn package

构建完毕,将在 target 目录下生成一个 WAR 包 ROOT.war.

# ls target/
classes  maven-archiver  ROOT  ROOT.war  surefire  surefire-reports  test-classes

5.选择满足应用运行要求的基础容器镜像,或者从基础的操作系统镜像开始安装和构建。

# 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         8080/TCP,8888/TCP   3d

MyBank 进行容器化_第1张图片

9.推送镜像。测试通过后,将把镜像发布到相应的镜像仓库中。

# docker tag  mybank-tomcat:latest  192.168.100.133:5000/mybank-tomcat:latest
# docker push  192.168.100.133:5000/mybank-tomcat:latest