Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)

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

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


一、场景重现

1. docker拉取tomcat镜像

docker pull tomcat

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http
不指定版本默认拉取的最新的latest版本

2. 查看拉取的镜像

docker images

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

3. 运行镜生成容器并运行,同时像映射端口

docker run --name tomcat-libai -it -p 9999:8080 -d tomcat

查看运行的容器

docker ps

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http
看到容器正在运行,且端口映射为9999

4. 查看本机ip

ifconfig

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http
如果没安装net-tools会提示安装

sudo apt install net-tools

5. 访问tomcat在本机的映射地址

172.20.10.13:9999

访问时页面是404
Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

二、分析

首先我们拉取镜像的时候没有指定版本,默认为最新的版本tomcat:latest
那么这个版本有什么特别的地方呢
我们都知道tomcat访问界面的index.jsp文件是在webapps目录下的
我们进入容器,查看一下tomcat目录下的webapps文件夹下有什么东西

1. 进入tomcat容器

docker exec -it tomcat-libai /bin/bash

2. 查看当前目录

看到webapps以及webapps.dist两个目录

ls -l

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

3. 查看webapps目录内容

//进入webapps目录,
cd webapps
//查看webapps目录内容
ls -l

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http
发现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

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

1. 删除webapps目录

rm -rf webapps

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

2. 修改webapps.dist为webapps

mv webapps.dist webapps

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

3. 再次访问

172.20.10.13:9999

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http
可正常访问,我们也能看到的确是tomcat最新的版本10.0.14

方案二

使用8或者9的tomcat版本
如果在容器内可输入exit退出容器

1. 搜索镜像

在仓库中搜索tomcat9的版本

docker search tomcat9

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

2. 拉取tomcat9镜像

拉取自己要用的镜像,我这里使用donglsheng/tomcat9_jdk8这个

docker pull donglsheng/tomcat9_jdk8

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

3. 查看镜像

拉取后查看镜像

docker images

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

4. 运行镜像生成容器实例

docker run --name tomcat9-libai -it -p 8888:8080 -d oupula/tomcat9_jdk8

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

5. 查看已运行的容器

docker ps

6. 访问网址

172.20.10.13:8888

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到),# Docker,docker,tomcat,http

可正常访问,tomcat版本为9.0.12文章来源地址https://www.toymoban.com/news/detail-656773.html


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

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

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

相关文章

  • Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

    目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像(基于SSH镜像) 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像(基于SSH镜像) 三、问题 1.nginx网页打不开  2.Apache容器启动一直为Ex

    2024年02月12日
    浏览(50)
  • 解决docker容器无法访问的问题

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

    2024年02月04日
    浏览(37)
  • docker容器项目无法访问mysql

    使用docker容器部署的项目无法访问在主机中安装的mysql? 从项目安全角度考虑,大多数公司在线上项目中都会开启防火墙,并针对指定端口添加白名单的方式进行访问。恰好就遇到了安装在宿主机中的mysql的端口3306没有开启访问,而是需要通过添加ip白名单的方式进行访问。

    2024年02月16日
    浏览(31)
  • Docker容器内部无法访问外网原因之一

    部署了一个Docker环境,宿主机可以访问Internet,启动了一个容器发现容器里的服务无法访问Internet,Docker网络使用的是桥接(bridge)模式。 使用Docker桥接模式启动的容器,宿主机如果可以访问外网,按理来说Docker容器本身也可以访问外网的。其原理:容器网卡与宿主机的dock

    2023年04月25日
    浏览(44)
  • docker 容器无法通过 IP 访问宿主机

    一次部署项目过程中,将Java项目与中间件服务部署在同一远程机器上,出现连接不上中间件服务的问题,而项目在本地运行时是可以连接的,没有问题。 这是因为项目与服务都是通过docker容器运行的,而docker 容器无法通过 IP 访问宿主机(貌似高版本解决了这个问题),所以

    2024年02月09日
    浏览(40)
  • Docker容器无法启动 Cannot find /usr/local/tomcat/bin/setclasspath.sh

    报错信息如下 解决办法 权限不够 加上 --privileged 获取最大权限

    2024年02月12日
    浏览(36)
  • Docker 容器正常启动但通过ip加端口无法访问

    前置条件:使用的阿里云轻量云服务器,ECS服务器应该也是类似的。 问题排查过程 排查linux服务器本身的防火墙是否开启,查看后是关闭的。 排查轻量云服务器的安全组是否将端口加入安全组,否则也是无法访问的,端口已加入安全组,可以排除这个问题。 通过tcping等端口

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

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

    2024年02月04日
    浏览(46)
  • docker安装mysql容器创建成功但无法启动问题

    在我之前的文章里 使用docker安装mysql中在拉取了mysql:5.7版本的镜像后,使用了以下命令来创建容器,容器创建成功,但无法启动,如下: 执行创建命令后,docker ps 查看正在运行中的容器,显示为空, docker ps -a 查看,mysql容器已经创建成功,但是在创建好之后就退出了 鉴于上

    2024年02月12日
    浏览(31)
  • 解决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日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包