docker初体验之docker-tomcat
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
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