Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)
天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
Docker创建tomcat容器实例后无法访问
- 一、场景重现
- 1. docker拉取tomcat镜像
- 2. 查看拉取的镜像
- 3. 运行镜生成容器并运行,同时像映射端口
- 4. 查看本机ip
- 5. 访问tomcat在本机的映射地址
- 二、分析
- 1. 进入tomcat容器
- 2. 查看当前目录
- 3. 查看webapps目录内容
- 三、思路
- 1. 修改weapps
- 2. 使用旧版tomcat
- 四、解决
- 方案一
- 1. 删除webapps目录
- 2. 修改webapps.dist为webapps
- 3. 再次访问
- 方案二
- 1. 搜索镜像
- 2. 拉取tomcat9镜像
- 3. 查看镜像
- 4. 运行镜像生成容器实例
- 5. 查看已运行的容器
- 6. 访问网址
一、场景重现
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 - 未找到)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
oracle数据库dbLink的使用
Oracle的数据库链路(dbLink)是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据,就像它们属于同一个数据库一样。 创建一个link: CREATE public DATABASE LINK link_sco…...
Coremail中睿天下|2023年第二季度企业邮箱安全态势观察
7月24日,Coremail邮件安全联合中睿天下发布《2023第二季度企业邮箱安全性研究报告》,对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一、垃圾邮件同比下降16.38% 根据Coremail邮件安全人工智能实验室(以下简称AI实验室&#…...
ZooKeeper分布式锁、配置管理、服务发现在Java开发中的应用
ZooKeeper提供了多种功能,包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。 分布式锁 import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch;pu…...
openGauss学习笔记-27 openGauss 高级数据管理- JOIN
文章目录 openGauss学习笔记-27 openGauss 高级数据管理- JOIN27.1 交叉连接27.2 内连接27.3 左外连接27.4 右外连接27.5 全外连接 openGauss学习笔记-27 openGauss 高级数据管理- JOIN JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 在…...
域名解析优先级
浏览器访问过程解析 访问网址——>首先在本地电脑看看hosts里面是否有域名对应IP地址,如何有直接访问对应IP, 如果没有,则联网询问DNS服务器(一般网卡那边都配置了DNS服务器IP) linux hosts 路径: w…...
【Opencv】视频跟踪算法KCF
目录 KCF算法简介opencv实现代码copencv实现代码python KCF算法简介 KCF(Kernelized Correlation Filter)是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KC…...
后端整理(集合框架、IO流、多线程)
1. 集合框架 Java集合类主要有两个根接口Collection和Map派生出来 Collection派生两个子接口 List List代表了有序可重复集合,可以直接根据元素的索引进行访问Set Set代表无序不可重复集合,只能根据元素本身进行访问 Map接口派生 Map代表的是存储key…...
C++ 类和对象篇(二) this指针
目录 一、this指针概念 二、this指针的特性 三、this指针存在哪里? 四、this指针可以为空吗? 一、this指针概念 1.是什么? 它是类内非静态成员函数的隐含形参,this指针指向调用该函数的对象。 this指针是C编译器给每个“非静态…...
Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率
Excel是广泛应用于办公场景的优质电子表格软件,然而,许多人只是使用鼠标点击菜单和工具栏来完成操作,而忽略了快捷键的威力。在本文中,我们将详解Excel中的F1-F9快捷键,帮助您掌握实用的快捷操作,提升工作效…...
Webpack 安装教程
Webpack 是一个前端资源加载/打包工具。 安装 Webpack 使用 cnpm 安装 webpack: cnpm install webpack -g 创建项目 接下来我们创建一个目录 app: mkdir app 在 app 目录下添加 runoob1.js 文件,代码如下: app/runoob1.js 文件…...
移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线
7月29日,在全球数字娱乐产业盛会 ChinaJoy上,中国联通携手高通公司、GSMA发布了“5GeSIM 计算终端产业合作计划”。 作为全球领先的物联网整体解决方案供应商,移远通信首批加入该计划,副总经理刘明辉受邀参加5GeSIM 计算终端产业合…...
全网最强大的工具箱—utools介绍及分享
今天来介绍一个相见恨晚的PC端工具——utools,什么是utools?用其自身的话来说:“uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。”,体验了下,好用且强大&…...
Linux常用基础命令❀
文章目录❀ ❀ls命令 ❀cd命令 ❀pwd命令 ❀date命令 ❀创建、删除文件和目录命令 ❀alias命令 ❀复制、移动、重命名、查看(文件、目录)命令 ❀find查找、wc统计命令 ❀vi/vim命令 1、打开文件 2、工作模式 vi与vim的四个模式 进入编辑模式…...
SQL-进阶
mysql --local-infile -u root -pset global local_infile 1;load data local infile 目录 into able 表名 fields terminated by , lines terminated by \n;...
[Pytorch]卷积运算conv2d
文章目录 [Pytorch]卷积运算conv2d一.F.Conv2d二.nn.Conv2d三.nn.Conv2d的运算过程 [Pytorch]卷积运算conv2d 一.F.Conv2d torch.nn.functional.Conv2d()的详细参数: conv2d(input: Tensor, weight: Tensor, bias: Optional[Tensor]None, stride: Union[_int, _s…...
主流开源监控系统一览
减少故障有两个层面的意思,一个是做好常态预防,不让故障发生;另一个是如果故障发生,要能尽快止损,减少故障时长。而监控的典型作用,就是帮助我们发现及定位故障,这两个环节对于减少故障时长至关…...
爬虫原理详解及requests抓包工具用法介绍
文章目录 一、什么是爬虫?二、爬虫的分类三、网址的构成四、爬虫的基本步骤五、动态页面和静态页面六、伪装请求头七、requests库介绍1. 概念:2. 安装方式(使用镜像源):3. 基本使用:4. response对象对应的方…...
tinkerCAD案例:31. 3D 基元形状简介
tinkerCAD案例:31. 3D 基元形状简介 1 将一个想法从头脑带到现实世界是一次令人兴奋的冒险。在 Tinkercad 中,这将从一个新的设计开始。 在新设计中,简单的原始形状可以通过不同的方式组合成更复杂的形状。 在这个项目中,你将探索…...
Vue2基础一、快速入门
零、文章目录 Vue2基础一、快速入门 1、Vue 概念 (1)为什么学 前端必备技能 岗位多,绝大互联网公司都在使用Vue 提高开发效率 高薪必备技能(Vue2Vue3) (2)Vue是什么 **概念:…...
英特尔马来西亚六厂布局:先进封装如何重塑半导体制造与供应链
1. 项目概述:从一则新闻到半导体制造的全球拼图前几天,行业里不少朋友都在转一条消息,说英特尔在马来西亚的封装产能布局又有新动作,计划要搞到六座工厂的规模。乍一看,这好像就是个普通的海外建厂新闻,但如…...
从碎片到体系:如何用Obsidian Weread插件打造你的个人读书知识库
从碎片到体系:如何用Obsidian Weread插件打造你的个人读书知识库 【免费下载链接】obsidian-weread-plugin Obsidian Weread Plugin is a plugin to sync Weread(微信读书) hightlights and annotations into your Obsidian Vault. 项目地址: https://gitcode.com…...
火绒安全软件实战教程:快速查杀、全盘查杀、自定义查杀到底怎么选?
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
如何快速掌握PyInstaller Extractor:5步提取可执行文件的完整指南
如何快速掌握PyInstaller Extractor:5步提取可执行文件的完整指南 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor PyInstaller Extractor是一款专为提取PyInstaller生成的可执行文件内…...
成本数据多系统自动采集与分析实操指南:基于2026大模型Agent的超自动化实践
在2026年的数字化转型深水区,企业对于“成本”的理解已从静态的财务报表演进为实时的流式数据。然而,即便是在大模型技术全面爆发的今天,数据孤岛依然是阻碍成本精细化管理的首要顽疾。成本数据往往碎片化分布在ERP、MES、WMS、供应链平台及各…...
手把手教你用STM32CubeMX配置PWM驱动DRV8833模块,轻松搞定智能小车调速
基于STM32CubeMX的DRV8833电机驱动开发实战 在嵌入式开发领域,电机控制一直是热门且实用的技术方向。无论是智能小车、机器人还是工业自动化设备,精准的电机调速都是核心需求。传统开发方式需要手动配置大量寄存器,不仅耗时耗力,还…...
揭秘哔咔漫画下载器:打造高效离线漫画图书馆的完全指南
揭秘哔咔漫画下载器:打造高效离线漫画图书馆的完全指南 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh…...
物联网设备超低功耗设计实战:从硬件协同到软件优化的全链路解析
1. 项目概述:为什么我们需要一个“超低功耗”的无线平台?在物联网设备开发领域,功耗一直是一个绕不开的核心痛点。我经历过太多项目,前期功能验证一切顺利,一到功耗测试就“翻车”。客户拿着样机问:“你们这…...
Arduino与FastLED库驱动WS2812B实现彩虹闪烁可穿戴灯光系统
1. 项目概述:用代码点亮创意的可穿戴灯光几年前,我第一次尝试把LED灯带缝进一件卫衣的帽子里,初衷很简单,就是想在做夜跑时更醒目一些。但当那些WS2812B灯珠第一次随着音乐节奏亮起彩虹般流动的色彩时,我知道我打开了一…...
3步搞定Linux启动盘:Deepin Boot Maker完全使用指南
3步搞定Linux启动盘:Deepin Boot Maker完全使用指南 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 在Linux系统安装和维护过程中,启动盘制作是一个看似简单却充满挑战的环节。传统命令行工…...
