解决docker启动tomcat容器访问端口显示404的问题,页面显示 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在

如果已经关闭防火墙,还出现404问题,那么就确定是tomcat的webapps文件夹下没有东西

  • 启动Tomcat容器
docker run -d -p 8888:8080 tomcat
  • 1
  • 查看已经启动的容器
docker ps
  • 1
  • 使用8888端口访问Tomcat失败
    ip:端口号
  • 先查看防火墙状况
service firewalld status
  • 1
  • 出现下图所示代码,表示已经关闭防火墙
    在这里插入图片描述
  • 如果防火墙没关闭,先关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 如果防火墙已经关闭但访问tomcat还是失败,那么使用如下命名进入tomcat的目录
docker exec -it a5f02a3e6dde(启动的tomcat容器的容器id) /bin/bash
  • 1
  • 查看当前文件夹内的所有文件
ls
  • 1
  • 进入webapps文件夹下,如果显示total 0,我们就需要把webapps.dist中的内容复制到webapps文件夹下
cd webapps
rm -f webapps
cp -r webapps.dist webapps
  • 1
  • 2
  • 3
  • 然后查看是否有可运行的容器
docker ps 
  • 1
  • 如果有,启动容器
  • 访问ip:主机端口(8888) 即可访问成功
    在这里插入图片描述

郁闷呀,下面我们进入这个tomcat执行的容器中一看究竟

docker exec -it c9820692a09e /bin/bash
  • 1

在这里插入图片描述
我们发现有webapps和webapps.dist两个文件,且webapps里面是空的,进入才发现原本应该在webapps文件中的文件都在webapps.dist文件中,(不知道为什么,知道的兄弟欢迎评论留言,谢谢)

问题找到了我们要解决它:将webapps.dist重命名成webapps即可,原来的webapps(空文件)可以删除或者命名成其他的名字

rmdir webapps
mv webapps.dist webapps
  • 1
  • 2

注: 因为我们是在服务器上记得将映射的宿主端口开放,不然也无法访问到。
这时我们刷新一下浏览器,tomcat首页出现了
在这里插入图片描述
虽然这样解决了问题但是不够彻底,因为再另启动一个Tomcat容器时又会出现这样的问题,且容器停止后,下一次再使用镜像生成新的容器时,这个错误还是存在
解决方法:实际上问题的根源是在生成容器的镜像上,只有将镜像修改了,再生成的容器才不会再出现这个问题,所以这里我们要用到上面说的 提交运行时容器成为镜像的命令即

docker commit -a=‘作者’ -m=‘备注’ 运行时容器ID 新镜像名称

此时我们先使用命令ctrl+p+q不退出容器的方式返回到宿主机目录下
在这里插入图片描述
我们可以看到我们的镜像文件多了我们刚刚新建的镜像,后期可以使用这个镜像来生成tomcat容器

下面我们把这个新镜像推送到hub服务器和自己的阿里云仓库中

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值