【Docker】解决Docker创建Tomcat容器实例后访问Tomcat主页时报HTTP状态404-未找到的错误

news2024/11/26 9:48:49

请添加图片描述


专栏精选文章

  1. 《Docker是什么?Docker从介绍到Linux安装图文详细教程》
  2. 《30条Docker常用命令图文举例总结》
  3. 《Docker如何构建自己的镜像?从镜像构建到推送远程镜像仓库图文教程》
  4. 《Docker多个容器和宿主机之间如何进行数据同步和数据共享?容器数据卷从介绍到常用操作图文教程》

背景

我在使用 Docker 拉取官方最新版的 Tomcat 镜像,创建该镜像的容器实例后,正想着访问 Tomcat 小猫咪主页时,却报了 404 错误。明明我已经开放了 Tomcat 的 8080 端口了,难道还有别的大坑吗?

image-20221212201011511


本期目录

  • 专栏精选文章
  • 背景
  • 解决方案一:防火墙
  • 解决方案二:Tomcat版本太新
  • 解决方案三:安装Tomcat 8



解决方案一:防火墙

很多刚使用 Linux 和 Docker 的新手小白最有可能遇见的情况就是宿主机的防火墙没关闭或者没有开放 8080 端口。

如果你是新手,很懒,我建议你直接永久关闭宿主机的防火墙。依次执行下列命令。

$ systemctl stop firewalld
$ systemctl disable firewalld
$ firewall-cmd --reload

如果你在企业,可不能关闭防火墙,只需要放开 Tomcat 的端口 8080 :

$ firewall-cmd --zone=public --remove-port=8080/tcp --permanent

查看宿主机已经放开的端口:

$ firewall-cmd --zone=public --list-ports

image-20221212203522568


解决方案二:Tomcat版本太新

如果你是直接执行下面这条官网上的拉取 Tomcat 镜像的命令:

$ docker pull tomcat

那么你就是拉取了最新的 Tomcat 10.0 版本,最新版的 Tomcat 10.0 在首页上的访问是不一样的。

【解决办法】

首先以前台交互式进入 Tomcat 10.0 镜像的容器 t1 中。

$ docker exec -it t1 /bin/bash

image-20221212201819296

查看当前目录。

$ ls -l

image-20221212202114890

所有网页资源都应该在 webapps 目录下,进入看看。

$ cd webapps
$ ls -l

image-20221212202237905

发现是空的,这就解释了为什么没办法访问 Tomcat 小猫首页了。新版的 Tomcat 的猫首页放在了 webapps.dist 里,我们只需要把 webapps 目录删除,再把 webapps.dist 重命名为 webapps 即可。

$ rm -rf webapps
$ mv webapps.dist webapps

image-20221212202723047

再次在浏览器中访问:

http://192.168.168.101:8080

image-20221212202916783

成功访问 Tomcat 首页。此时也可以发现 Tomcat 版本是 10.0 ,算是比较高的版本了,一般现在企业用的还都是 8 或 9 。


解决方案三:安装Tomcat 8

正如上面所演示的,最新的 Tomcat 10 在主页上的改动对新手是不太友好的。在企业中绝大部分都还在用 Tomcat 8.0 或 9.0 ,这已经够用了。因此,我们删除最新版的 Tomcat 容器和镜像,转而下载带有 JDK 8 的 Tomcat 8.0 版本镜像。

删除 Tomcat 10.0 的容器:

$ docker rm -f t1

删除 Tomcat 10.0 的镜像:

$ docker rmi -f tomcat:latest

image-20221212204223941

拉取带有 JDK 8 的 Tomcat 8.0 版本镜像:

$ docker pull billygoo/tomcat8-jdk8

image-20221212204557845

使用该镜像创建 Tomcat 容器实例 t8

$ docker run -d -p 8080:8080 --name t8 billygoo/tomcat8-jdk8:latest

image-20221212204722987

在浏览器中访问:

http://192.168.168.101:8080

image-20221212204845306

直接就可以访问 Tomcat 的主页,不需要做任何修改。可以看到 Tomcat 版本是 8.0.53 ,比最新版的 Tomcat 10.0 对新手更友好。

希望本篇博文对你有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode HOT 100 —— 215.数组中的第K个最大元素

题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 思路 一.暴力法: cla…

计算机研究生就业方向之去大厂做人工智能

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

ARM32汇编逆向分析基础

寄存器和指令基本格式 寄存器 寄存器名称寄存器描述R0函数的第1个参数, 以及保存函数返回的结果R1 - R3保存函数的第2~4个参数R4 – R8通用寄存器,其中R7在系统调用时存储调用号R9平台相关R10通用寄存器, 可用于保存局部变量R11/FP栈帧指针, 用于记录栈帧R12过程间…

欣奥诚分享:企业最应避讳这八类广告宣传词汇

广告宣传中,企业最应避讳这八类词汇 众所周知,拥有一个朗朗上口、脍炙人口的广告标语、广告口号,对于企业战略部署、发展壮大具有最要作用。一个好的广告标语,不仅可以传达产品买点、展现品牌魅力,激发购买欲望&#…

安装多版本node

一、安装多版本node的原因: 在项目开发过程中,不同项目使用的nodejs版本不同,有时会因为node版本过高或太低,导致报错; 解决方式 利用nvm进行管理(本文使用此种方式)配置环境变量(如…

iOS 组件化开发----(一)图片资源管理的方式

1.直接拖拽到工程,勾选Target membership 1)Resource 的使用方式 将文件直接拖入到工程目录下, 并告诉Xcode打包项目时候把这些图片文件打包进去. 这样在应用的".app"文件夹中就有这些图片. 在项目中, 读取这些图片可以通过以下方式来获取图片…

JavaWeb开发(一)——maven仓库

一、maven仓库 1、maven的定义 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 2、maven的约定配置 -- /src/main/java //项目java源代码 -- /src/main/resources //项目的资源文件,比如springmvc.xml -- /src/…

极狐gitlib的安装和使用

极狐gitlib的安装和使用一、实验环境二、安装部署(不带邮箱)三、一些操作3.1 常用命令3.2 备份3.2.1 备份文件分为两步:3.2.2 自定义备份位置3.3 恢复3.4 一些问题3.5 包含的组件四、使用极狐gitlib4.1 初始登录说明4.2 新建用户4.3 新建一个…

CSS之文字样式

1、字体类型设置 标签名&#xff1a;font-family注意&#xff1a;英文字体只适用于英文&#xff0c;中文字体可以适用中文和英文代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-…

Linux学习-81-Apache安装过程

17.9 Apache安装过程 Apache&#xff1a;作为LAMP架构的前端是一款功能强大&#xff0c;稳定性好的Web服务器程序&#xff0c;该服务器直接面向用户提供网站访问&#xff0c;发送网页&#xff0c;图片等文件内容。之前的名称就叫做 Apache&#xff0c;不过后来改名字叫做 httpd…

如何将Unity开发的AR程序编译到IPad/iPhone上真机运行

如何将Unity项目编译成iOS app&#xff0c;并在ipad或者iphone上真机运行呢&#xff1f;大体步骤分为三步&#xff1a; 使用Unity生成 .xcodeproj 文件使用XCode将AR APP编译到IPad/iPhone在真机上设置开发者模式和信任开发者 我的环境&#xff1a; 使用MacBook Pro 进行开发…

分布式操作系统 - 7.分布式一致性与复制管理

文章目录1.一致性与复制1.1 对象复制问题&#xff08;1&#xff09;单副本对象的同步控制&#xff08;2&#xff09;单副本同步控制方法&#xff08;3&#xff09;多副本对象的同步控制方法1.2 支持伸缩性的复制技术2.以数据为中心的一致性模型2.1 分布式数据仓&#xff08;dat…

Redis框架(五):大众点评项目 商品目录 添加Redis缓存

大众点评项目 商品目录 添加Redis缓存需求&#xff1a;基于Redis查询商品信息业务实现给商品添加缓存给店铺类型添加缓存总结和业务流程SpringCloud章节复习已经过去&#xff0c;新的章节Redis开始了&#xff0c;这个章节中将会回顾Redis实战项目 大众点评 主要依照以下几个原则…

Vue Demi是如何让你的库同时支持Vue2和Vue3的

Vue Demi是什么 如果你想开发一个同时支持Vue2和Vue3的库可能想到以下两种方式&#xff1a; 1.创建两个分支&#xff0c;分别支持Vue2和Vue3 2.只使用Vue2和Vue3都支持的API 这两种方式都有缺点&#xff0c;第一种很麻烦&#xff0c;第二种无法使用Vue3新增的组合式 API&am…

【Redis】Redis跳表与实现源码解析(Redis专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

Tomcat下载和安装

下载 Tomcat官网网址 我选择的是8&#xff0c;根据自己需要选择不同版本 选择64位下载 下载有点慢&#xff0c;等一会儿就行 安装 首先确认安装了JDK&#xff1a;命令行窗口输入java -version 配置Tomcat环境变量 配完之后验证是否成功。 winR->cmd->输入startup.bat…

什么是社交新零售?社交新零售的底层商业又是逻辑是什么?

一千个品牌商心中&#xff0c;有一千个新零售——自从马云2016年10月提出新零售的概念后&#xff0c;电商平台、传统商超、电商品牌、线下品牌&#xff0c;汹涌而至&#xff0c;都想搭上“新零售快车”。 新零售模式是依靠于大数据的开发应用&#xff0c;国内新零售模式发展多年…

Node.js快速入门

一、简介 1、什么是Node.js 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎&#xff0c;V8引擎执行Javascript的速度非常快&#xff0c;性能非常好。 2、Node.js有什么用 如果你是一个前端程序…

【有料c++题目周刊 | 第一期】希腊诸神

文章目录第一题&#xff1a;珀耳修斯点金题目描述输入描述输入示例输出描述输出示例解题思路&C题解第二题&#xff1a;女神赫拉题目描述输入描述输入示例输出描述输出示例解题思路&C题解第一题&#xff1a;珀耳修斯点金 题目描述 某希腊神话故事中&#xff0c;有一个…

物联网通信技术|课堂笔记week2-2|9月7日·21日

sudo ifconfig bridge101 hw ether 9e:3e:53:38:45:66 目录 Linux网络管理命令 (1)route (2)ip (3)netstat (4)ping ​​​​​​两台电脑连起来后ping不通? (5)telnet (6)ssh (7)wget Linux网络管理命令 (1)route 路由为互联网的中转站 静态路由 动态路由 rout…