docker初体验之docker-tomcat

标签: docker 初体验 docker | 发表时间:2015-09-14 20:05 | 作者:changedi
出处:http://www.blogjava.net/

docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker。daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器。

好吧,停止广告,daocloud再好,也不给我发钱,真是的。

这里就介绍一下我最简单的一个docker-tomcat容器。

首先在我的linux机器上安装docker:

安装教程特别多,随便可以找到,我的本地环境是64位的centos7.0,所以安装就被简化为:

Sudo yum install docker

这么一句话了。

docker的核心思想是everything is container,docker运行的就是一个个的容器,而容器是用户完全自定义的镜像,我个人认为最灵活的就是写一个dockerfile(我理解就算一个镜像了),然后把它build为镜像并run,一个可用的容器环境就完全起来了。

步骤:

1,创建一个项目,最好在git上

2,写Dockerfile文件,描述你的镜像

3,docker build

4,docker run

这样就好了。

于是,以我个人的项目为例:

1,创建项目:https://github.com/changedi/mydocker

2,编辑Dockerfile:https://github.com/changedi/mydocker/blob/master/Dockerfile

3,在本地项目中运行docker build <image_name> .,build一个自定义名字的镜像

4,启动这个镜像容器:docker run -d -p 80:80 <image_name>

这样,这个镜像就好了,服务也起来了,后续可以通过docker ps来查看启动的镜像,通过docker stop来停止容器。

 

我这里解释一下我的Dockerfile:

  1 # Using a compact OS

 2 FROM ubuntu:13.10 
 3 
 4 MAINTAINER changedi <[email protected]
 5 
 6 # update source  
 7 RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list  
 8 RUN apt-get update  
 9   
10 # Install curl  
11 RUN apt-get -y install curl  
12   
13 # Install JDK 7  
14 RUN cd /tmp &&  curl -L 'http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz' -H 'Cookie: oraclelicense=accept-securebackup-cookie; gpw_e24=Dockerfile' | tar -xz  
15 RUN mkdir -p /usr/lib/jvm  
16 RUN mv /tmp/jdk1.7.0_65/ /usr/lib/jvm/java-7-oracle/  
17   
18 # Set Oracle JDK 7 as default Java  
19 RUN update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-oracle/bin/java 300     
20 RUN update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-oracle/bin/javac 300  
21   
22 ENV JAVA_HOME /usr/lib/jvm/java-7-oracle/  
23   
24 # Install tomcat7  
25 RUN cd /tmp && curl -L 'http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz' | tar -xz  
26 RUN mv /tmp/apache-tomcat-7.0.8/ /opt/tomcat7/  
27   
28 ENV CATALINA_HOME /opt/tomcat7  
29 ENV PATH $PATH:$CATALINA_HOME/bin:$JAVA_HOME/bin  
30 
31 # ADD ace-java-demo-1.0.0.war /tmp/myapp/
32 # RUN cd /tmp/myapp && jar -xvf ace-java-demo-1.0.0.war
33 # RUN rm -rf ace-java-demo-1.0.0.war
34 # RUN cp -R /tmp/myapp /opt/tomcat7/webapps/myapp
35 # RUN mkdir /opt/tomcat7/webapps/myapp
36 RUN rm -rf /opt/tomcat7/webapps/ROOT/*
37 ADD ace-java-demo-1.0.0.war /opt/tomcat7/webapps/ROOT/ace-java-demo-1.0.0.war
38 RUN cd /opt/tomcat7/webapps/ROOT/ && jar -xvf ace-java-demo-1.0.0.war
39  
40 ADD tomcat-users.xml /opt/tomcat7/conf/tomcat-users.xml
41 # ADD server.xml /opt/tomcat7/conf/server.xml
42 RUN cat /opt/tomcat7/conf/serv*.xml
43 RUN ls /opt/tomcat7/conf
44 RUN ls /opt/tomcat7/webapps
45 
46 ADD tomcat7.sh /etc/init.d/tomcat7  
47 RUN chmod 755 /etc/init.d/tomcat7  
48   
49 # install nginx
50 RUN apt-get install nginx -y
51 ADD ./nginx/nginx-conf /etc/nginx/conf.d
52 
53 # Expose ports
54 EXPOSE 80
55 
56 
57 # Define default command.  
58 ENTRYPOINT service tomcat7 start && tail -f /opt/tomcat7/logs/catalina.out

主要做几件事:

1,拉个操作系统:这里是Ubuntu

2,装工具:curl、jdk、tomcat、nginx,配置环境变量,配置tomcat,配置nginx(tomcat和nginx的配置都是本地搞好,直接add)

3,部署应用(自己的war包),这里我直接利用docker的ADD操作,把git项目中的文件直接add到容器中

 

参考资料:

1,docker安装 http://www.linuxidc.com/Linux/2014-12/110034.htm

2,dockerfile编写 http://blog.csdn.net/we_shell/article/details/38445979



changedi 2015-09-14 20:05 发表评论

相关 [docker 初体验 docker] 推荐:

docker初体验之docker-tomcat

- - BlogJava-首页技术区
docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker. daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器.

Docker & Flatpak

- - IT瘾-dev
目前最流行的技术莫过于Docker,Docker和Docker衍生的东西用到了很多很酷的技术,目前deepin应用软件发布转变成flatpak,这些看似风牛马不相及的技术方案,实际都使用了一个共同的底层技术——Namespace,假如没有namespace支持,这些技术实现都将成为空中楼阁. 一句话总结,无论是Docker、sysmted-nspawn还是flatpak,都是在namespace基础上,针对不同的场景,生出的不同的解决方案.

kubernetes移除Docker?

- -
两周前,Kubernetes在其最新的Changelog中宣布1.20之后将要弃用dockershime,也就说Kubernetes将不再使用Docker做为其容器运行时. 这一消息持续发酵,掀起了不小的波澜,毕竟Kubernetes+Docker的经典组合是被市场所认可的,大量企业都在使用. 看上去这个“弃用”的决定有点无厘头,那么为什么Kubernetes会做出这样的决定.

Docker应用场景

- - 灯火阑珊
Flynn:一个使用go语言编写的开源PaaS平台,目标是简化分布式环境中应用的部署和维护,可以通过git push命令,将应用部署到Docker,从而省去复杂的配置和操作. CoreOS:一种新的架构体系重新设计的Linux发型版,可以运行在既有的硬件活着云服务器上. CoreOS不提供类似yum或apt的包管理工具,用户不需要在CoreOS中安装软件,而是让程序都在Docker容器中运行.

docker使用场景

- - 开源软件 - ITeye博客
Docker应用容器相对于 VM 有以下几个优点:. 1、启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久. 2、资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试. 3、性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源. 因为VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销.

Docker 监控实战

- - SegmentFault 最新的文章
如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据:. 2 / 3 的公司在尝试了 Docker 后最终使用了它. 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内. 越大型的公司越早开始使用 Docker. 研究发现主机数量越多的公司,越早开始使用 Docker.

Docker入门例子

- - 开源软件 - ITeye博客
Docker 提供了一个可以运行应用程序的容器. Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的. 2 Docker安装与启动. #将docker加入开机启动. 3 Docker的14个基础命令. 检查Docker的安装是否正确. 运行"Hello World"例子.

Docker认识基础

- - CSDN博客推荐文章
作者:chszs,版权所有,未经同意,不得转载. 博主主页: http://blog.csdn.net/chszs. Docker是一个C/S架构的容器引擎,它包括镜像、容器和库这三个重要的概念. Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器. 1)Docker容器引擎.

Docker 调试技巧

- - 行业应用 - ITeye博客
摘要: 『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zookeeper:3.4,然后就容器名就冲突了. 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种.

Docker 公司已死 !

- -
作者简介:Chris Short在IT行业有20多年的从业经历,他毕生坚定地提倡使用开源解决方案. 他是身体部分残障的美国空军退伍老兵,现与妻子和儿子一起住在密歇根州大底特律都市区. 要说Docker在2017年的日子非常难过,那已经算是轻描淡写了. 除了优步(Uber)外,我实在想不出还有哪一家更加被利用、被炒作、资金充裕的硅谷初创公司(仍在运营之中)像Docker在2017年那样步履维艰、糟糕透顶.