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 
通过以上的步骤完成了一个简单应用的容器化。在没有特殊需求的情况下,容器化过程不算复杂。

应用docker化的更多相关文章

  1. CI Weekly #9 | 揭秘阿里 Docker 化实践之路

    2017年悄然而至,对 flow.ci 你有什么新的期待呢?新的一年,flow.ci会越来越强大好用,希望继续得到你的支持与反馈.最近,我们做了如下的「功能优化」与「问题修复」,看看有没有你想要的: ...

  2. Docker化运维方式讲解

    应用迁移需求 应用运维需要考虑的一个重要问题就是迁移, 在不同机器.机房.环境间迁移.迁移的原因有很多, 比如硬件过保(硬件故障), 机房迁移, 应用扩缩容等. 应用迁移的核心需求是: 简单.迁移操作 ...

  3. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...

  4. Docker化tomcat 并且使用maven热部署

    今天没事干 就把自己的tomcat  docker化并且使用maven实现热部署 特别记录一下~ 1.首先进行centos7的安装 就不在记录了 注意的是最好使用centos7 因为docker 依赖 ...

  5. DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路

    2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...

  6. FastDfs集群docker化部署

    初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...

  7. 从头认识一下docker-附带asp.net core程序的docker化部署

    从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...

  8. docker化java web应用

    一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...

  9. 部门sonarque代码扫描测试服务器docker化

    部门内部的服务器太多了,打算将对应的测试环境docker化. 转成docker后,以后不管是升级调研还是定制化开发测试都方便,就是事情太多,一直没有抽出身来做,今天处理下并把过程记录下来跟大家分享下. ...

  10. 一步步创建第一个Docker App —— 2. 创建 Docker化 主机

    原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...

随机推荐

  1. Java多线程系列——过期的suspend()挂起、resume()继续执行线程

    简述 这两个操作就好比播放器的暂停和恢复. 但这两个 API 是过期的,也就是不建议使用的. 不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会 ...

  2. Java8 中增强 Future:CompletableFuture

    增强的 Future:CompletableFuture CompletableFuture(它实现了 Future 接口) 和 Future 一样,可以作为函数调用的契约.当你向它请求获得结果,如果 ...

  3. Jacky扯淡系列 – 验证码

    1 验证码的用途 防止恶意用户的csrf,比如一些bot的重复请求,类似的有密码破解等操作. 但是验证码这个东西会降低用户的体验度,因此不能将其作为必备的防护措施. 2 常见的验证码形式 通常的验证码 ...

  4. iTunes空间不足无法备份iphone的问题

    因为换手机,需要把旧iphone备份出来,在新iphone上恢复.使用mac进行备份时总是提示iTunes无法备份,所用电脑空间不够,即使有个用空间的移动硬盘也无法备份.网上的方法都是说修改iTune ...

  5. Swagger使用小记

    Swagger是一种框架,用于自动生成Restfull API的文档,而不用开发者自己编写文档.它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让 ...

  6. Python 函数 (关键字参数)

    关键字参数 可变参数允许你传入0个或者任意个参数,这些可变参数在函数调用时会自动组装成一个tuple,而关键字参数允许你传入0个或者任意个含参数名的参数,这些参数在函数内部自动组装成为一个dict d ...

  7. [Java] Apache Ant 构建基础教程

    环境:Ubuntu 12.04, java 1.7.0, ant 1.8.2. 前言 Apache Ant 是一个软件自动化构建工具,构建过程包括编译.测试和部署等.它和 Make 工具相似,但由 J ...

  8. linux中free命令内存分析

    Mem(物理内存分配情况)行 total:表示物理 内存总量 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 free:未被分配的内存 s ...

  9. linux erase

    map的erase windows和linux不同,而迭代器弄不好就失效 1 #include <iostream> 2 #include <map> 3 #include & ...

  10. c++11 auto 与 decltype 详解

    转自: here 一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题 ...