podman启动tomcat

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. 标准启动命令(后台运行)

bash
podman run -d \--name my-tomcat \-p 8080:8080 \tomcat:latest

参数说明

  • -d:后台运行(detach 模式)

  • --name my-tomcat:给容器起个名字,方便后续管理

  • -p 8080:8080:将宿主机 8080 端口映射到容器内的 8080 端口

🧪 2. 验证容器是否启动成功

bash
# 查看运行中的容器
podman ps# 查看启动日志(确认无报错)
podman logs my-tomcat

 

当看到类似 Server startup in [xxx] milliseconds 的日志时,表示 Tomcat 已成功启动。

🌐 3. 访问与防火墙配置

启动后,访问地址为:http://<你的服务器IP>:8080

如果打不开,是因为 Rocky Linux 默认防火墙阻止了 8080 端口,需要放行:

bash
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(临时测试)

bash
# 先进入容器内部
podman exec -it my-tomcat /bin/bash
# 复制默认应用
cp -r webapps.dist/* webapps/
# 退出容器
exit

 

完成后再次访问 http://IP:8080 就能看到经典的 Tomcat 欢迎页了。

方案二:挂载你自己的 WAR 包(正式部署)

bash
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 包需要部署,最规范的方式是挂载整个应用目录:

bash
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. 常用容器管理命令

bash
# 停止容器
podman stop my-tomcat# 启动已存在的容器
podman start my-tomcat# 重启容器
podman restart my-tomcat# 删除容器(需先停止)
podman rm my-tomcat# 查看实时日志
podman logs -f my-tomcat

 

💡 7. 如果端口 8080 被占用

可以修改宿主机映射端口,例如改为 9090

bash
podman run -d --name my-tomcat -p 9090:8080 tomcat:latest

 

之后访问 http://IP:9090 即可。

🔄 8. 开机自启(可选)

如果希望容器随系统启动自动运行,可以创建 systemd 服务:

bash
podman generate systemd --name my-tomcat --new --files
sudo mv container-my-tomcat.service /etc/systemd/system/
sudo systemctl enable container-my-tomcat.service