1. 拉取 Tomcat 8 + JRE 8 镜像(M4 专用)
选择官方维护的 tomcat:8-jre8-temurin(基于 Eclipse Temurin JRE 8,稳定且适配 arm64):
bash
# 拉取 Tomcat 8 + JRE 8 镜像(arm64 版本)
docker pull tomcat:8-jre8-temurin
# 验证镜像架构(确保是 arm64)
docker inspect tomcat:8-jre8-temurin | grep -i arch
# 输出 "Architecture": "arm64" 即适配 M4
2. 启动 Tomcat 8 容器(端口映射 + 目录挂载)
bash
# 1. 本地创建 webapps 目录(用于部署 war 包)
mkdir -p ~/tomcat8/webapps
# 2. 启动容器(后台运行+端口映射+目录挂载)
docker run -d \ --name tomcat8-jre8 \ -p 8080:8080 \ -v ~/tomcat8/webapps:/usr/local/tomcat/webapps \ tomcat:8-jre8-temurin
-
--name tomcat8-jre8:容器命名,方便后续操作 -
-p 8081:8080:主机8080端口映射到容器8081,可以修改容器端口为未占用端口 -
-v ~/tomcat8/webapps:/usr/local/tomcat/webapps:本地目录挂载(放 war 包自动部署)
3. 验证运行状态
bash
# 查看容器是否启动
docker ps | grep tomcat8-jre8
# 查看 Tomcat 日志(确认无报错) docker logs -f tomcat8-jre8
日志中出现 Server startup in xxx ms 即启动成功
4. 访问 Tomcat 首页
plaintext
http://localhost:8080
5.无法访问排查
第一步:先确认容器和端口是否真的在运行
1. 检查容器状态(必须是 Up 状态)
bash
docker ps | grep tomcat8-jre8
-
✅ 正常输出示例:
xxx tomcat:8-jre8-temurin "catalina.sh run" Up 5 minutes 0.0.0.0:8888->8080/tcp tomcat8-jre8 -
❌ 无输出 / 状态是 Exited:容器没启动,执行
docker start tomcat8-jre8重启。
5.2 检查 Mac 端口是否监听(8888 必须被占用)
bash
lsof -i :8888
-
✅ 输出包含
docker-proxy:端口映射成功; -
❌ 无输出:容器端口映射失败,需重新创建容器(看第二步)。
第二步:解决核心问题(Tomcat 8 官方镜像无默认首页)
Tomcat 8 官方镜像的 webapps 目录默认是空的(只有 webapps.dist 有默认文件),这是访问 404 / 无法访问的最常见原因!
方案:手动复制默认首页到挂载目录
bash
# 1. 进入容器内部
docker exec -it tomcat8-jre8 bash
# 2. 复制默认首页文件到 webapps(Tomcat 读取的目录)
cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps/
# 3. 退出容器
exit
# 4. 重启容器(确保生效)
docker restart tomcat8-jre8
第三步:重新验证访问
浏览器打开:
plaintxt
http://localhost:8888