文章目录

  • 一. 问题背景
  • 二. 报错的原因
  • 三. 解决方案


一. 问题背景

操作系统: Linux

情况:使用Linux上的Docker创建Tomcat容器,已经指定了映射端口,但是启动Tomcat容器后,在本地电脑访问tomcat首页,出现404报错,如下:

Docker网站 docker网站打不开_docker

参考自:

  1. SpringBoot 入坑(六)Docker 整合 Tomcat 启动&&访问404异常解决
  2. Docker方式启动tomcat,访问首页出现404错误

二. 报错的原因

因为配置了阿里云的Docker加速下载,所以下载下来后,创建的Tomcat容器中的webapps目录中,没有资源,所以会报404错误。而所需的资源是在webapps.dist中。

三. 解决方案

首先查看当前出现问题的Tomcat容器,使用docker ps,如下:

Docker网站 docker网站打不开_tomcat_02

使用docker exec -it 出现问题的容器ID /bin/bash进入tomcat容器,如下:

Docker网站 docker网站打不开_docker_03


输入ls -l,如下:

Docker网站 docker网站打不开_Docker_04


输入cd webapps,里面确实没有tomcat首页所需要的资源,如下

Docker网站 docker网站打不开_Docker网站_05


输入cd ../,再输入cd webapps.dist,里面确实有tomcat首页所需要的资源,如下:

Docker网站 docker网站打不开_Docker网站_06


Docker网站 docker网站打不开_Docker_07


使用cd ../返回上层目录,使用rm -rf webapps删除webapps目录,使用mv webapps.dist webapps将webapps.dist改成webapps即可,如下:

Docker网站 docker网站打不开_tomcat_08


到这里就可以访问成功了,但是这只是暂时性的解决了问题,如果用出现问题的这个tomcat容器的镜像,再创建出几个tomcat容器,这些新的tomcat容器仍是会访问不到首页会报404。要彻底解决这个问题就要将修改配置后的tomcat容器打包成一个镜像,到时候直接使用这个配置好的镜像就不会有404问题。

继续下面的步骤:

看不懂下图的话,可以跳过这个图:

Docker网站 docker网站打不开_Docker_09


如果用的是XShell,或者其他客户端,可以不使用上面的ctrl+p+q,可以直接创建多个窗口,就直接进入主机模式了 ,如下:

Docker网站 docker网站打不开_tomcat_10

然后使用docker ps查看出现问题的那个tomcat容器,然后使用docker commit -a='随意内容' -m='随意内容’ 出现问题的容器ID 全是小写字母的新镜像的名字,如下:

Docker网站 docker网站打不开_tomcat_11


使用docker images查看刚刚创建的镜像,如下:

Docker网站 docker网站打不开_Docker网站_12


使用docker run -d -p 8888:8080 新镜像的ID用刚刚自定义的镜像创建新的tomcat容器,如下:

Docker网站 docker网站打不开_tomcat_13


使用docker rm 出现问题的容器ID删除有问题的容器,如下:

Docker网站 docker网站打不开_Docker网站_14


到此已经从本质上解决访问tomcat容器首页报错。

有问题的伙伴可留言。