一、拉取tomcat7镜像
docker pull tomcat:7
二、验证镜像是否拉取成功
docker images
三、运行容器
docker run -it --name 别名 -d -p 8080:8080 镜像ID
docker run -it --name tomcat1 -d -p 8080:8080 e614000ce544
四、验证容器是否运行成功
docker ps
五、访问tomcat是否成功
ip为宿主机ip,端口为8080端口
tomcat启动外部无法访问
1、进入运行中的容器
docker exec -it 运行中的容器ID /bin/bash
docker exec -it c1bcca46e4c8 /bin/bash
2、查看容器目录结构
3、进入tomcatwebapps目录
cd webapps
发现webapps目录为空。
4、发现我们需要的东西在webapps.dist文件目录下
5、进入上层目录,在tomcat目录下修改webapps为webapps2
cd ../
mv webapps webapps2
修改 webapps.dist为webapps
mv webapps.dist webapps
退出当前容器
exit
6、刷新访问tomcat目录
发现已经能访问成功。
六、配置tomcat挂载运行
1、宿主机里home目录下新建tomcat目录,复制容器里conf,webapps到宿主机
记得要在宿主机home目录下新建tomcat文件夹
docker cp 容器id:/usr/local/tomcat/conf /home/tomcat/conf/
docker cp c1bcca46e4c8:/usr/local/tomcat/conf /home/tomcat/conf/
docker cp 容器id:/usr/local/tomcat/webapps /home/tomcat/webapps/
docker cp c1bcca46e4c8:/usr/local/tomcat/webapps /home/tomcat/webapps/
2、停止当前容器
docker stop c1bcca46e4c8
3、把容器里的tomcat里的webapp,logs,conf挂载到宿主机tomcat目录下,方便上传代码,同步持久化日志,以及方便配置tomcat;启动容器.
docker run -d --name 别名 -p 8080:8080 -v /home/tomcat/conf/:/usr/local/tomcat/conf/ -v /home/tomcat/webapps/:/usr/local/tomcat/webapps/ -v /home/tomcat/logs/:/usr/local/tomcat/logs/ 镜像名称
docker run -d --name tomcat -p 8080:8080 -v /home/tomcat/conf/:/usr/local/tomcat/conf/ -v /home/tomcat/webapps/:/usr/local/tomcat/webapps/ -v /home/tomcat/logs/:/usr/local/tomcat/logs/ e614000ce544
查看容器是否运行成功
有强迫症的可以把之前的tomcat1给删掉。
查看所有容器
docker ps -a
tomcat1是没有运行的,我们来删除它。
docker rm c1bcca46e4c8
ok,tomcat1已经删除,剩下一个tomcat的容器。
别名为:tomcat的容器已经运行成功。
外部能正常访问。
以后我们部署项目时就直接把包放在挂载的宿主机下的home目录下的tomcat就行了。
注意:发现多个版本tomcat部署war包时候遇到java.util.zip.ZipException: zip END header not found
可以尝试拉取8.5版本,还有部署war包是需要连宿主机数据库的话千万不要使用127.0.0.1和localhost,最好使用内网ip或者公网ip。
docker pull tomcat:8.5-jdk11-temurin-focal