再整理一篇学习docker的笔记,使用ubuntu来作base image,然后用—volumes-from 将war包挂在到tomcat容器运行.
需要两个容器:
1 获取URL中指定的war文件并存储到volume
2 一个运行tomcat服务并加载war包得容器
war容器
1 2 3 4
| $cd docker $mkdir war $cd war $touch Dockerfile
|
Dockerfile 文件
1 2 3 4 5 6 7 8 9
| FROM ubuntu:14.04 MAINTAINER hzchenkj <hzchenkj@gmail.com> ENV REFRESHED_AT 2014-11-01 RUN apt-get -yqq update RUN apt-get -yqq install wget VOLUME [ "/var/lib/tomcat7/webapps/" ] WORKDIR /var/lib/tomcat7/webapps/ ENTRYPOINT [ "wget" ] CMD [ "-?" ]
|
在ubuntu镜像基础上,安装wget软件,使用/var/lib/tomcat7/webapps/ 挂在volume并指定为工作目录,便于后面wget命令下载war包。
使用ENTRYPOINT和CMD命令组合方式,提供了默认不带参数运行docker run,会提示怎么使用wget命令,使用指定url参数运行wget下载。
构建镜像并运行:
1 2
| docker build -t hzchenkj/war . docker run -t -i --name sample hzchenkj/war https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
|
下载sample war包,放到/var/lib/tomcat7/webapps/,在host主机路径/var/lib/docker/vfs/dir/能查到对于的war包:
tomcat容器
1 2 3
| $ mkdir tomcat7 $ cd tomcat7 $ touch Dockerfile
|
Dockerfile文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM ubuntu:14.04 MAINTAINER hzchenkj <hzchenkj@163.com> ENV REFRESHED_AT 2014-11-01 RUN apt-get -yqq update RUN apt-get -yqq install tomcat7 default-jdk ENV CATALINA_HOME /usr/share/tomcat7 ENV CATALINA_BASE /var/lib/tomcat7 ENV CATALINA_PID /var/run/tomcat7.pid ENV CATALINA_SH /usr/share/tomcat7/bin/catalina.sh ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp RUN mkdir -p $CATALINA_TMPDIR VOLUME [ "/var/lib/tomcat7/webapps/" ] EXPOSE 8080 ENTRYPOINT [ "/usr/share/tomcat7/bin/catalina.sh", "run" ]
|
安装jdk和tomcat,设置启动需要的环境变量,端口,最后一个启动命令,运行tomcat到前台。
1
| docker build -t hzchenkj/tomcat7 .
|
运行应用程序
1 2 3
| docker run --name sample_app --volumes-from sample -d -P hzchenkj/tomcat7 docker port sample_app 8080 curl http://localhost:<port>
|
还可以通过link方式将数据库容器关联,来持久化数据到数据库容器
mysql 容器和数据容器
启动一个Volume_Data容器,将主机的/opt/data映射到容器的/data目录
1
| docker run -v /opt/data/:/data/ --name Volume_Data ubuntu:14.04
|
启动mysql容器,使用前面创建的数据容器
1
| docker run -d -P -h mysqlhost --volumes-from Volume_Data --name mysql hzchenkj/mysql
|
启动tomcat容器,关联mysql容器,程序需要修改mysql数据库连接
1
| docker run -d -h tomcat7host --name tomcat7 --link mysql:db hzchenkj/tomcat7
|
会在tomcat容器的hosts文件中增加 “172.14.. db” 和相应的环境变量,来关联mysql容器
1
| docker run -rm --volumes-from Volume_Data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
|
备份mysql的数据容器