Docker安装tomcat服务

部署要求

宿主机为CentOS7,上面安装了docker。

1、docker镜像选择ubuntu,在ubuntu中安装tomcat。
2、容器8080端口映射为宿主机18080端口。

软件准备

1、ubuntu下可以使用的jdk一份,jdk-8u131-linux-x64.tar.gz。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2、ubuntu下可以使用的tomcat一份,apache-tomcat-8.0.44.tar.gz。
下载地址:http://tomcat.apache.org/download-80.cgi

3、使用xftp,上传jdk和tomcat到CentOS7的/download目录下。

docker准备

下载镜像

docker search ubuntu

docker pull ubuntu

docker images

启动镜像

假设我们的所有安装程序都放在了宿主机的/download目录下,现在需要将其挂载到容器的/mnt/software目录下。

docker run -i -t -v /download/:/mnt/software/ ubuntu /bin/bash

注意,上面的ubuntu也可以换成ubuntu的镜像ID。

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

启动容器

退出容器后,可以再次启动容器(使用容器ID或容器NAMES)。
docker ps -l

docker start 87be

注意,先运行docker run,然后被stop掉的容器才可以使用上面的命令。

上面的命令不能进入容器,要进入容器还需要使用:
docker attach 87be

安装jdk

1、进入容器环境。

2、更新vim,否则上下左右和退格键无法使用。
apt-get update

apt-get remove vim-common

apt-get install vim

3、进入jdk所在目录
cd /mnt/software

然后参考《全平台安装JDK》,完成剩下的配置。

安装tomcat

1、进入容器环境。

2、解压tomcat到/opt目录。
cd /mnt/software

tar zxvf apache-tomcat-8.0.44.tar.gz -C /opt

3、启动tomcat。
cd /opt/apache-tomcat-8.0.44/bin/

./startup.sh

4、测试访问。
apt-get install curl

curl localhost:8080

5、关闭tomcat。
./shutdown.sh

编写启动脚本

1、进入根目录,新建run.sh文件。
cd /

vim run.sh

2、编辑run.sh内容为:

1
2
3
4
5
6
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
sh /opt/apache-tomcat-8.0.44/bin/catalina.sh run

注意:run.sh中的启动脚本不可以写为:

1
sh /opt/apache-tomcat-8.0.44/bin/startup.sh run

如果这么写的话,在使用docker run的时候,会自动退出。

因为想要Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

3、更改run.sh权限
chmod 777 run.sh

4、测试访问。
./run.sh

curl localhost:8080

保存容器

1、退出容器
exit

2、查看dockerid
docker ps -l

3、保存容器为ubuntu/tomcat镜像。
docker commit 87be ubuntu/tomcat

启动镜像

1、启动ubuntu/tomcat镜像
docker run -d -p 18080:8080 --name tomcat8.0 ubuntu/tomcat /run.sh

  • -d:表示以守护模式执行/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
  • -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口。
  • –name:表示容器名称,用一个有意义的名称命名即可。

2、查看容器运行状态
docker ps

3、关闭容器
docker kill tomcat8.0 或者 docker stop tomcat8.0

4、再次启动容器
docker start tomcat8.0

5、测试访问
在宿主机中,执行命令 curl localhost:18080

或者,查到容器IP后,执行命令 curl <容器IP>:8080

或者,在宿主机中关闭防火墙,systemctl stop firewalld.service。然后,在宿主机同局域网PC浏览器中输入http://<宿主机IP>:18080

书签

Docker部署JavaWeb项目实战

使用 Docker 搭建 Java Web 运行环境

0%