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

这篇具有很好参考价值的文章主要介绍了【Docker】解决Docker创建Tomcat容器实例后访问Tomcat主页时报HTTP状态404-未找到的错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


专栏精选文章

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

背景

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

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




解决方案一:防火墙

很多刚使用 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

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


解决方案二:Tomcat版本太新

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

$ docker pull tomcat

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

【解决办法】

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

$ docker exec -it t1 /bin/bash

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

查看当前目录。

$ ls -l

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

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

$ cd webapps
$ ls -l

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

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

$ rm -rf webapps
$ mv webapps.dist webapps

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

再次在浏览器中访问:

http://192.168.168.101:8080

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

成功访问 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

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

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

$ docker pull billygoo/tomcat8-jdk8

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

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

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

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

在浏览器中访问:

http://192.168.168.101:8080

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

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

希望本篇博文对你有帮助。文章来源地址https://www.toymoban.com/news/detail-462354.html

到了这里,关于【Docker】解决Docker创建Tomcat容器实例后访问Tomcat主页时报HTTP状态404-未找到的错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎样在docker中使用macvlan创建可以独立ip访问的容器

    macvlan是一种网络虚拟化技术,它允许在一个物理网络接口上配置多个虚拟网络接口,每个虚拟网络接口都有自己独立的 MAC 地址,并且可以配置上 IP 地址进行通信。macvlan主要应用于Docker容器网络中,可以在一个主机上创建多个网络环境,每个环境都有自己独立的 MAC 地址,从

    2024年02月03日
    浏览(62)
  • docker容器启用ipv6地址方法,用ipv6地址访问容器方法流程、创建一个nginx容器用ipv6地址访问测试流程

    你如果没用使用Docker-Compose,就忽略配置,以了解为主,直接去看下面的docker配置。 docker-compose.yaml 文件必须使用 version: “2.*” , version: “3.*” 不支持 enable_ipv6 配置 如果已有旧的容器在运行(网络配置发生了变化),则需要先销毁容器 docker-compose down 然后再重新创建 doc

    2024年02月02日
    浏览(42)
  • 全网最全,基于docker 创建的Minio容器配置Https 访问,不使用第三方服务

    1.需要一个域名ssl证书 阿里云有免费的,可以使用,推荐链接: https://yundunnext.console.aliyun.com/?spm=a2c4g.11186623.0.0.3efc4f2epEe03yp=cas#/overview/cn-hangzhou 2.使用docker的主机模式     --network=host 3.在宿主机上的  /etc/hosts  添加域名映射  127.0.0.1     minio.demo.com 4.将证书配置挂载到mini

    2024年04月13日
    浏览(34)
  • 解决docker容器无法访问的问题

    服务器上的docker容器都无法访问了,而且裸机部署的应用则没有任务问题。 docker容器重启多次均无法访问!!! docker服务重启也无济于事!!! 服务器网卡重启也不行!!! 网上搜了一堆方法: 1、Linux内核和docker版本不匹配的问题,需要重启服务器所以没有试,服务器上

    2024年02月04日
    浏览(32)
  • 解决Tomcat异常:java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。

    调试项目的时候发现每次使用idea重新部署项目时会出现这个错误,但是不影响实际使用,重启服务器第一次部署时也不会出现错误,尝试搜索解决这个问题。 解决方法: 进入tomcat目录下查找配置文件,conf Context.xml,查找Context标签,修改属性reloadble为 reloadable=“false” (如果

    2024年02月04日
    浏览(42)
  • 解决docker容器之间网络互通 启动web服务只能本地localhost访问无法从外部访问

    docker容器之间相互访问 1.查看当前的网络 Copy [root@host ~]# docker network ls NETWORK ID          NAME                DRIVER              SCOPE 3dd4643bb158        bridge              bridge              local 748b765aca52        host                host                local 4d59a0cd3ff

    2024年02月10日
    浏览(31)
  • 解决:docker创建Redis容器成功,但无法启动Redis容器、也无报错提示

    1.修改redis.conf配置文件参数 daemonize 为 no : 由于创建容器实例时,会进行容器数据卷挂载,因此可以直接在外部宿主机里面修改,docker会自动同步该文件到redis容器对应目录里面 2.删除之前创建的redis容器实例 3.复杂使用run命令,再次重新创建redis容器实例。会进行容器数据卷

    2024年02月20日
    浏览(35)
  • Docker 创建mongoDB容器,status为Exited (2)解决方法

    在命令无误的情况下创建出来的status为Exited (2) 查看对应目录下的mongo.conf文件,例如:/root/mongo/mongod.conf 仔细检查是否有误,尤其是字符拼写和大小写问题。 我的就是大小写有误产生的问题,如图: dbpath 应为 dpPath ,为字母驼峰原创。 更正后先删除对应创建失败的容器(dock

    2024年02月17日
    浏览(44)
  • docker在删除容器或者镜像时报错

    linux:centos7 docker: 20.10.8 错误1:Error response from daemon: conflict: unable to remove repository reference “hello-world:latest” (must force) - container 258930df3ddc is using its referenced image bf756fb1ae65 错误2:unable to delete bdf60dc2ada3 (must be forced) - image is being used by stopped container e4b44cda2 linux使用docker安装n

    2024年02月15日
    浏览(26)
  • 这里做一篇关于wsl2更新到最新版本使用镜像网络,但是docker创建的容器不能被访问的问题(困扰了我一整天)

    在windows2023年9月的一次更新中,wsl2支持了新的网络模式镜像模式,他能够通过localhost地址从wsl2内部连接到windows的127.0.0.1地址 ##相当于是和本地主机拥有同一个ip 原wsl2是不支持的,虽说是net网络模式,可访问主机,主机也可访问wsl2,同时也可上网,但是不能被网络访问,如

    2024年04月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包