Docker安装tomcat服务

文章目录
  1. 1. 部署要求
  2. 2. 软件准备
  3. 3. docker准备
    1. 3.1. 下载镜像
    2. 3.2. 启动镜像
    3. 3.3. 启动容器
  4. 4. 安装jdk
  5. 5. 安装tomcat
  6. 6. 编写启动脚本
  7. 7. 保存容器
  8. 8. 启动镜像
  9. 9. 书签

部署要求

宿主机为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到/usr/lib/jvm目录。
cd /mnt/software

mkdir -p /usr/lib/jvm

tar zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm/

4、配置JAVA_HOME和JRE_HOME,vi /etc/profile,在最后添加:

1
2
3
4
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

然后使配置文件生效,source /etc/profile

5、测试jdk是否配置成功。
javajavac

安装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 运行环境