基于jdk1.7.0_79,tomcat7.0,镜像centos:6.9这些资源,通过命令:
docker run -it -p 8080:8080 --name tomcat -v /home/tomcat:/home/tomcat centos:6.9 bin/bash
创建了容器tomcat,进入容器后,进入到容器的/home/tomcat目录下,解压压缩文件,把文件移动到容器的/usr/local目录下面。vi /etc/profile添加java与tomcat环境设置。
上面简略构建了tomcat容器。然后退出容器:exit,执行:
docker commit tomcat centos:tomcat
基于镜像centos:6.9镜像创建新的版本:centos:tomcat。
本人有个项目,项目的war包是:rest.war。我把war包放入宿主机的/home/tomcat目录下,执行命令:
docker run -id -p 8081:8080 --name rest -v /home/tomcat:/home/tomcat centos:tomcat
创建新的容器rest并在后台运行,执行:
docker exec -it rest bash
进入容器,进入到/home/tomcat,解压rest.war包,到rest目录下:
cd /home/tomcat
mkdir rest
cd rest
cp ../rest.war .
rm -rf ../rest.war
jar -xvf rest.war
然后在tomcat目录下的server.xml添加如下:
上述配置完毕后,在宿主机执行命令:
docker exec -it rest /usr/local/tomcat7.0/bin/catalina.sh run
一直提示:/rest,内存泄漏(memery leak),进入容器执行启动tomcat正常。
由于我要通过jenkins集成,上述那个是不满足我后期要求的。就进行centos:tomcat,我写了个简单的Dockerfile,在启动容器时就能启动tomcat服务。Dockerfile如下:
FROM centos:tomcat
CMD /usr/local/tomcat7.0/bin/catalina.sh run
进入到Dokcerfile所在目录,执行命令:
docker build -t centos:rest .
执行成功后。执行命令:docker container ls -a,查看所有容器。执行名:docker container rm -f rest,强制删除容器rest。
然后执行命令:docker container prune ,删除所有容器。容器删除成功后,执行命令:
docker run -id -p 8080:8080 --name rest -v /home/tomcat:/home/tomcat centos:rest
这个时候在宿主机执行命令:ifconfig,查看宿主机ip,假如为:192.168.78.12,在浏览器输入:http://192.168.78.12:8080/rest,能成功进入到rest的wen页面。
通过docker start rest启动web服务,通过docker stop rest关闭web服务。这两个命令在jenkins中集成打包部署war包时,在shell中是很好用的!
以上是操作实例,在内网,无法截图,如果有问题,可以加群,进行讨论!