Docker创建tomcat容器实例后无法访问(HTTP状态404)
一、场景重现
1. docker拉取tomcat镜像
docker pull tomcat
不指定版本默认拉取的最新的latest版本
2. 查看拉取的镜像
docker images
3. 运行镜生成容器并运行,同时像映射端口
docker run --name tomcat-libai -it -p 9999:8080 -d tomcat
查看运行的容器
docker ps
看到容器正在运行,且端口映射为9999
4. 查看本机ip
ifconfig
如果没安装net-tools会提示安装
sudo apt install net-tools
5. 访问tomcat在本机的映射地址
172.20.10.13:9999
访问时页面是404
二、分析
首先我们拉取镜像的时候没有指定版本,默认为最新的版本tomcat:latest
那么这个版本有什么特别的地方呢
我们都知道tomcat访问界面的index.jsp文件是在webapps目录下的
我们进入容器,查看一下tomcat目录下的webapps文件夹下有什么东西
1. 进入tomcat容器
docker exec -it tomcat-libai /bin/bash
2. 查看当前目录
看到webapps以及webapps.dist两个目录
ls -l
3. 查看webapps目录内容
//进入webapps目录, cd webapps //查看webapps目录内容 ls -l
发现webapps中是空的,这也就是为什么我们访问时界面404的原因
最新版的tomcat的webapps目录内容为空,他的内容都在wenapps.dist中
三、思路
想要解决这个问题有两个方法
1. 修改weapps
将webapps文件夹删除,将webapps.dist目录名称修改为webapps
2. 使用旧版tomcat
8或者9的tomcat版本即可
四、解决
方案一
删除webapps,webapps.dist替换为webapps
在容器内,到tomcat目录下
cd /usr/local/tomcat
1. 删除webapps目录
rm -rf webapps
2. 修改webapps.dist为webapps
mv webapps.dist webapps
3. 再次访问
172.20.10.13:9999
可正常访问,我们也能看到的确是tomcat最新的版本10.0.14
方案二
使用8或者9的tomcat版本
如果在容器内可输入exit退出容器
1. 搜索镜像
在仓库中搜索tomcat9的版本
docker search tomcat9
2. 拉取tomcat9镜像
拉取自己要用的镜像,我这里使用donglsheng/tomcat9_jdk8这个
docker pull donglsheng/tomcat9_jdk8
3. 查看镜像
拉取后查看镜像
docker images
4. 运行镜像生成容器实例
docker run --name tomcat9-libai -it -p 8888:8080 -d oupula/tomcat9_jdk8
5. 查看已运行的容器
docker ps
6. 访问网址
172.20.10.13:8888
可正常访问,tomcat版本为9.0.12
到此这篇关于Docker创建tomcat容器实例后无法访问(HTTP状态404)的文章就介绍到这了,更多相关docker拉取tomcat提示404内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
docker-compose镜像发布springboot项目的流程分析
Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理,接下来通过本文给大家介绍docker-compose发布springboot项目的流程分析,一起看看吧2021-06-06使用 Azure Container Registry 储存镜像的问题
Azure Container Registry(容器注册表)是基于 Docker Registry 2.0规范的托管专用 Docker 注册表服务。这篇文章主要介绍了使用 Azure Container Registry 储存镜像,需要的朋友可以参考下2021-05-05
最新评论