podman启动tomcat
我安装的是RockyLinux10的GNOME服务器版本,好像自带了podman,我安装了docker后来镜像仓库搞的麻烦找到了podman,发现已经安装,所以不解释podman的安装。
podman设置国内镜像仓库加速
vim /etc/containers/registries.conf 添加如下配置片段 unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "docker.io" mirror = [ # { location = "docker.1ms.run" }, # 将这里换成你选择并测试可用的镜像源 # 可以添加多个作为备用 # { location = "docker.xuanyuan.me" }, { location = "docker.m.daocloud.io" } ]
设置完不用做其他事直接使用
安装tomcat,默认最新版
bash
podman pull tomcat
🚀 1. 标准启动命令(后台运行)
podman run -d \ --name my-tomcat \ -p 8080:8080 \ tomcat:latest
参数说明:
-
-d:后台运行(detach 模式) -
--name my-tomcat:给容器起个名字,方便后续管理 -
-p 8080:8080:将宿主机 8080 端口映射到容器内的 8080 端口
🧪 2. 验证容器是否启动成功
# 查看运行中的容器 podman ps # 查看启动日志(确认无报错) podman logs my-tomcat
当看到类似 Server startup in [xxx] milliseconds 的日志时,表示 Tomcat 已成功启动。
🌐 3. 访问与防火墙配置
启动后,访问地址为:http://<你的服务器IP>:8080
如果打不开,是因为 Rocky Linux 默认防火墙阻止了 8080 端口,需要放行:
sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload
⚠️ 4. 重要:解决 Tomcat 11 访问 404 的问题
Tomcat 10+(包括你用的 11.0.24)出于安全考虑,默认把 ROOT 应用移到了 webapps.dist 目录下,webapps 是空的,所以直接访问根路径会显示 404。
两种解决方案(任选一种):
方案一:将默认应用复制到 webapps(临时测试)
# 先进入容器内部 podman exec -it my-tomcat /bin/bash # 复制默认应用 cp -r webapps.dist/* webapps/ # 退出容器 exit
完成后再次访问 http://IP:8080 就能看到经典的 Tomcat 欢迎页了。
方案二:挂载你自己的 WAR 包(正式部署)
podman run -d \ --name my-tomcat \ -p 8080:8080 \ -v /path/to/your-app.war:/usr/local/tomcat/webapps/ROOT.war:Z \ tomcat:latest
注意:挂载卷时务必加上
:Z参数,否则 SELinux 会阻止 Podman 读取挂载的文件。
📂 5. 部署你自己的 Web 应用
如果你有 WAR 包需要部署,最规范的方式是挂载整个应用目录:
podman run -d \ --name my-tomcat \ -p 8080:8080 \ -v /data/myapp:/usr/local/tomcat/webapps/myapp:Z \ tomcat:latest
将 /data/myapp 替换为你存放 HTML/JSP/类文件的目录。
🛠️ 6. 常用容器管理命令
# 停止容器 podman stop my-tomcat # 启动已存在的容器 podman start my-tomcat # 重启容器 podman restart my-tomcat # 删除容器(需先停止) podman rm my-tomcat # 查看实时日志 podman logs -f my-tomcat
💡 7. 如果端口 8080 被占用
可以修改宿主机映射端口,例如改为 9090:
podman run -d --name my-tomcat -p 9090:8080 tomcat:latest
之后访问 http://IP:9090 即可。
🔄 8. 开机自启(可选)
如果希望容器随系统启动自动运行,可以创建 systemd 服务:
podman generate systemd --name my-tomcat --new --files sudo mv container-my-tomcat.service /etc/systemd/system/ sudo systemctl enable container-my-tomcat.service
浙公网安备 33010602011771号