Docker 学习之旅(六):使用 Docker 搭建 Java Web 运行环境

学习 Docker 在一开始肯定不是去学习它的理论(至少对大部分人而言),而是学习它的使用方法进而去使用。大概搭建好了 Docker 的环境,也尝试了创建自己的 Docker 镜像,现在就可以尝试一些比较实用的东西,比如使用 Docker 来搭建 Java Web 运行环境。

寻找镜像

既然官方的镜像那么多,那么我们为什么不先去看一下官方镜像呢?打开 Docker Hub 一搜索 tomcat,排在第一个的就是。

地址:https://hub.docker.com/_/tomcat/

这边选择 tomcat7 + jre7,但是通过查看构建所使用的 Dockfile 文件发现,tomcat 的官方源采用的是 jre7 是 openJDK7 的 jre,这里需要注意。

下载运行 tomcat

tomcat 的默认启动参数为 CMD ["catalina.sh", "run"],启动方式为:

docker run -it --rm tomcat:7.0

使用 http://container-ip:8080 在浏览器访问。

或者将端口映射到本地,运行:

$ docker run -it --rm -p 8888:8080 tomcat:7.0

然后使用 http://localhost:8888 或是 http://host-ip:8888 访问。

部署 Java Web 项目

文档上已经说明,对于 tomcat 7 ,tomcat 所在目录为 /usr/local/tomcat,所以对其进行修改完成部署。

复制文件

先使用如下命令启动容器:

$ docker run -it -v /home/ubuntu/tomcat:/mnt/war tomcat:7.0 /bin/bash

此处相关参数包括:

  • -i:表示以“交互模式”运行容器
  • -t:表示容器启动后会进入其命令行
  • -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

即运行后进入容器命令行,并将主机的 /home/ubuntu/tomcat 挂载到了容器的 /mnt/war 目录。

然后将部署文件拷贝到主机的 /home/ubuntu/tomcat 目录并继续在容器中操作部署程序。

1
2
3
4
# cd webapps/ROOT/
# rm -rf *
# cp -r /mnt/war/* .
# exit

创建镜像

此处需要记住刚才所运行容器的 ID,bash 里面 root@0b2d4744734c 的 ‘root@’ 后面的便是容器 ID。如果已经找不到,可使用 docker ps -a 查看之前所运行过的所有容器。

然后创建镜像。

$ docker commit 0b2d4744734c timerever/javaweb:1.0

运行镜像

使用刚刚自定的名称运行镜像。

docker run -it --rm -p 8888:8080 timerever/javaweb:1.0 catalina.sh run