1)首先安装源代码工具Git。 
[root@master~]# yum install-y git 
2)从GitHub上下载示例的Java应用源代码。 
[root@master~]# cd/opt 
[root@masteropt]# git clone https://github.com/nichochen/mybank-demo-maven 
3)准备编译和构建环境。 
安装应用构建所需的Java开发工具包JDK及构建工具Maven。 
[root@masteropt]# yum install-y maven 
4)通过构建工具编译及构建应用。 
[root@masteropt]#cd mybank-demo-maven/ 
[root@mastermybank-demo-maven]# mvn package 
构建完毕后,将在target目录下生成一个WAR包ROOT.war。 
[root@mastermybank-demo-maven]# ls target/ 
classesmaven-archiverROOTROOT.warsurefire 
5)选择满足应用运行要求的基础容器镜像,或者从基础的操作系统镜像开始安装和构建。为了方便,这里选择Tomcat7的官方镜像tomcat:7.0.70-jre7-alpine。一般推荐预先把镜像下载到本地,以方便本地调试。 
[root@mastermybank-demo-maven]# docker pull tomcat:7.0.70-jre7-alpine 
6)编写Dockerfile。 
这个例子中我们的逻辑比较简单,就是把构建好的应用部署包拷贝到发布目录。 
Dockerfile示例如下。 
[root@mastermybank-demo-maven]#cat Dockerfile 
FROMtomcat:7.0.70-jre7-alpine 
ADD./target/ROOT.war/usr/local/tomcat/webapps/mybank.war 
7)执行DockerBuild构建镜像。 
把镜像命名为mybank-tomcat。在没有指定镜像的tag的请求下,默认的标签为latest。 
[root@mastermybank-demo-maven]# docker build -t mybank-tomcat. 
SendingbuildcontexttoDockerdaemon4.194MB 
Step1:FROMtomcat:7.0.70-jre7-alpine--->ffe5379d7563 
Step2:ADD./target/ROOT.war/usr/local/tomcat/webapps/mybank.war--->113cc34fc0e4Removingintermediatecontainerf04b6e3a9989 
Successfullybuilt113cc34fc0e4 
构建完毕后,可以看见刚才DockerBuild生成的新镜像09cf49110ce2。 
[root@mastermybank-demo-maven]# docker images | grep mybank-tomcat 
mybank-tomcatlatest09cf49110ce22minutesago149.4MB 
8)测试镜像。 
通过dockerrun命令测试新创建的镜像。这里通过参数-p8080:8080把容器的8080端口映射到主机的8080端口,以方便测试。 
[root@mastermybank-demo-maven]# docker run -it --rm -p8080: 8080 mybank-tomcat 
容器启动完毕后,可以通过curl或浏览器测试应用是否工作正常。
[root@mastermybank-demo-maven]#curl http://master.example.com:8080/mybank/ 
9)推送镜像。测试通过后,下一步将把镜像发布到相应的镜像仓库中。先通过docker tag创建指向目标镜像仓库的镜像名称,然后通过docker push推送镜像至目标仓库。 
[root@master~]#docker tag mybank-tomcat:latest registry.your-registry.com/mybank-tomcat:latest 
[root@master~]#docker push registry.your-registry.com/mybank-tomcat:latest 
通过以上的步骤完成了一个简单应用的容器化。在没有特殊需求的情况下,容器化过程不算复杂。

最新文章

  1. java基础知识(十一)java反射机制(上)
  2. console.log((function f(n){return ((n > 1) ? n * f(n-1) : n)})(5))调用解析
  3. 【转】我们应该如何去了解JavaScript引擎的工作原理
  4. 【CodeForces 651B】Beautiful Paintings 排序+贪心
  5. 轻松学Shell之认识正规表达式
  6. leetcode—word ladder II
  7. [SAP] 外部系统调用SAP web service用户验证的简单方法
  8. php学习之路:WSDL详细解释(两)
  9. DW,DM,ODS的区别
  10. Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException
  11. SpiderMonkey js引擎的静态编译与使用
  12. 软考论文的六大应对策略V1.0
  13. tp5.0与mysql存储过程
  14. Non-zero exit code (1)
  15. 使用Python在自己博客上进行自动翻页
  16. pycharm 对数据库进行可视化操作
  17. django 错误之 ImportError: No module named **
  18. 20190416 OSX系统使用VMware Fusion安装CentOS7踩的那些坑
  19. 在Javascript弹出窗口中输入换行符
  20. 201621123012 《java程序设计》第3周学习总结

热门文章

  1. [译]Godot 引擎 GDNative 架构初探
  2. kafka性能测试1.0.0
  3. 聊聊模板方法模式,装饰器模式以及AOP
  4. matlab中如何将视频保存成图像
  5. java-信息安全(十六)-双向认证
  6. laravel数据库配置
  7. src引入js时添加时间戳参数方法
  8. Ubuntu系统搭建SVN服务器
  9. 设计模式-创建型模式,python享元模式 、python单例模式(7)
  10. PHP-CLI环境变量的设置和读取