centos8上docker tomcat容器访问报404解决方法


 

目录

【README】

【1】docker安装tomcat

【2】启动多个tomcat容器


【README】

1.本文记录了 访问docker tomcat容器报404的解决方法;

2.附带安装tomcat步骤;

3.centos8 安装docker,refers2 centos8安装docker_PacosonSWJTU的博客-CSDN博客【README】本文参考了 docker官方文档安装指南, Install Docker Engine on CentOS | Docker DocumentationInstructions for installing Docker Engine on CentOShttps://docs.docker.com/engine/install/centos/【1】安装前的工作1.需要centos7或8上;// 查看centos版本[root@centos204 ~]# uname -r4https://blog.csdn.net/PacosonSWJTU/article/details/120773955


【1】docker安装tomcat

步骤1,搜索 docker tomcat 镜像

docker search tomcat

步骤2,拉取tomcat镜像

docker pull tomcat

步骤3,根据镜像启动tomcat容器

虚拟机端口8888转发到 tomcat容器8080端口;

[root@centos204 tomcat]# docker run -d -p 8888:8080 tomcat
0b1be1a3dcd2e9723343a8b3f3f0bcd1f1a07da38b3090d256132d8320e9add2

步骤4,win10浏览器 访问  http://192.168.163.204:8888/ 报404

 步骤5,查看防火墙

发现什么都没有,即centos8机器上8888端口无法被防火墙隔离了

# 查看防火墙开通网络访问端口列表
[root@centos204 tomcat]#  firewall-cmd --zone=public --list-ports
空
[root@centos204 tomcat]# # 查看防火墙状态
[root@centos204 tomcat]#  systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) (thawing) since Fri 2021-10-15 01:02:33 EDT; 9h ago
..............................................

步骤6,开通8888端口的防火墙访问权限

# 开通8888端口
[root@centos204 tomcat]#  firewall-cmd --zone=public --add-port=8888/tcp --permanent         
success
# 查看已开通端口
[root@centos204 tomcat]#  firewall-cmd --zone=public --list-ports                   
空# 重新加载防火墙规则到内存
[root@centos204 tomcat]# firewall-cmd --reload
success
# 再次查看已开通端口, 已开通 
[root@centos204 tomcat]#  firewall-cmd --zone=public --list-ports
8888/tcp

步骤7,再次访问   http://192.168.163.204:8888/ 还是报404

步骤8,查看tomcat容器部署目录

使用命令: docker exec -it 运行的tomcat容器ID /bin/bash 进入到tomcat的目录

# 查看docker所有容器
[root@centos204 tomcat]# docker ps -a
CONTAINER ID   IMAGE         COMMAND             CREATED          STATUS                    PORTS                                       NAMES
0b1be1a3dcd2   tomcat        "catalina.sh run"   13 minutes ago   Up 13 minutes             0.0.0.0:8888->8080/tcp, :::8888->8080/tcp   modest_heyrovsky
0a5b713c0021   hello-world   "/hello"            24 hours ago     Exited (0) 24 hours ago                                               frosty_turing# 找出tomcat容器id, 并进入该容器的内存运行目录 
[root@centos204 tomcat]# docker exec -it 0b1be1a3dcd2 /bin/bash
root@0b1be1a3dcd2:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work# 查看webapps 部署了哪些项目,居然为空
root@0b1be1a3dcd2:/usr/local/tomcat# ls webapps# 再查看webapps.dist 部署了哪些项目 不为空 
root@0b1be1a3dcd2:/usr/local/tomcat# ls webapps.dist
ROOT  docs  examples  host-manager  manager

很显然, webapps tomcat的部署根目录没有任何内容,所以访问报404; 下面我们 把 webapps.dist 的内容拷贝到 webapps ;

 步骤9,把 webapps.dist 的内容拷贝到 webapps

root@0b1be1a3dcd2:/usr/local/tomcat# cp -r webapps.dist/* webapps/

步骤10,再次访问  http://192.168.163.204:8888/; 成功!

注意:我这里只是测试,所以把 webapps.dist 目录中的内容拷贝到了 webapps 下; 也可以不这样做,把虚拟机上的物理磁盘目录挂载到 tomcat容器部署根目录 webapps,也可以实现部署的目的


【2】启动多个tomcat容器

步骤1,利用tomcat docker镜像启动多个tomat容器

# 利用tomcat镜像启动第2个tomcat容器,外部端口8887 
[root@centos204 tomcat]# docker run -d -p 8887:8080 tomcat 
e7f01a261ee88d18507142c6a09a1548d2fd6f7586aad7281e2b980fb379f306# 利用tomcat镜像启动第3个tomcat容器,外部端口8886
[root@centos204 tomcat]# docker run -d -p 8886:8080 tomcat 
99e3813639c8defd220950a57cf6a5e744677db407b0dd53832144b9c3a5878c
[root@centos204 tomcat]# 

步骤2,按照管理,开通8887 8886 防火墙权限

[root@centos204 tomcat]# firewall-cmd --zone=public --add-port=8887/tcp --permanent     
success
[root@centos204 tomcat]# firewall-cmd --zone=public --add-port=8886/tcp --permanent 
success
[root@centos204 tomcat]# firewall-cmd --reload
success
[root@centos204 tomcat]# firewall-cmd --zone=public --list-ports
8888/tcp 8887/tcp 8886/tcp
[root@centos204 tomcat]# 

步骤3,把 webapps.dist 目录下的内容拷贝到 webapps

# 查看所有docker 容器
[root@centos204 tomcat]# docker ps -a
CONTAINER ID   IMAGE         COMMAND             CREATED          STATUS                    PORTS                                       NAMES
99e3813639c8   tomcat        "catalina.sh run"   2 minutes ago    Up 2 minutes              0.0.0.0:8886->8080/tcp, :::8886->8080/tcp   naughty_maxwell
e7f01a261ee8   tomcat        "catalina.sh run"   2 minutes ago    Up 2 minutes              0.0.0.0:8887->8080/tcp, :::8887->8080/tcp   beautiful_proskuriakova
0b1be1a3dcd2   tomcat        "catalina.sh run"   28 minutes ago   Up 28 minutes             0.0.0.0:8888->8080/tcp, :::8888->8080/tcp   modest_heyrovsky
0a5b713c0021   hello-world   "/hello"            24 hours ago     Exited (0) 24 hours ago                                               frosty_turing# 进入tomcat容器目录
[root@centos204 tomcat]# docker exec -it 99e3813639c8 /bin/bash
root@99e3813639c8:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@99e3813639c8:/usr/local/tomcat# ls webapps
ROOT  docs  examples  host-manager  manager# 进入tomcat容器目录 
[root@centos204 tomcat]# docker exec -it e7f01a261ee8 /bin/bash
root@e7f01a261ee8:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@e7f01a261ee8:/usr/local/tomcat# exit
exit

步骤4, 访问  http://192.168.163.204:8887/ ,      【2】启动多个tomcat容器

 

访问成功;

docker是个好东西,1个tomcat镜像,可以启动3个或多个独立运行的tomcat容器,而不是把这3个tomcat 运行在3台机器上; 这就是虚拟化;

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

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

相关文章

ConcurrentHashMap--自用,非教学

结论先行,细节在下面 jdk1.7是如何解决并发问题的以及完整流程 一.首先new一个concurrentHashMap 调用默认构造方法 二.初始化 初始化initialCapacity(默认是16,指一个segment内Entry的数量),loadFactor&#xff…

Java开发必须掌握的线上问题排查命令

转载自 Java开发必须掌握的线上问题排查命令作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题。这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查。由于在生产环境中&#x…

centos8启动docker-mysql8容器

【README】 本文记录了 centos8 安装,启动mysql8的docker容器的步骤; 【1】安装mysql8 docker容器 步骤1, 查看mysql8 docker镜像版本 ; 最简单的方式是上 Docker Hubhttps://hub.docker.com/直接搜索mysql,查看其 …

Java命令学习系列(一)——Jps

转载自 Java命令学习系列(一)——Jpsjps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象"pgrep java"或"ps -ef grep java",jps并不使用应用…

springboot2.5.5配置druid数据源1.2.8与jdbc

【README】 本文记录了 springboot配置 druid数据源的步骤; 【1】新建springboot项目并配置druid 步骤1,新建springbt项目 步骤2,选择spring web,jdbc,mysql驱动依赖; 步骤3,添加 druid数据源…

tsc244标签编辑软件_能打小票的标签机,M110智能标签打印机来了!

每张被贴上的标签背后,都是对待梦想的认真、对待生活的用心,M110智能标签打印机为你标记美好,实现品质与效率兼得的追求。01、 产品简介M110智能标签打印机采取热敏无墨打印技术,无需碳带,便捷经济,配套“标…

面试官:简述实现一个线程池的设计思路

前言 二面碰到这个问题人都麻了,我扯了好多没用的,面后赶紧来补一下,但是找到的基本都是一堆纯代码,不是讲思路的。下面的思路是我参考美团技术团队文章后总结的。 具体思路 一、总体设计 线程池在内部实际上构建了一个生产者…

Java命令学习系列(四)——jstat

转载自 Java命令学习系列(四)——jstatjstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上&…

修改打印机ip工具_使用富士施乐一体机因动态IP导致不能打印与扫描的解决方法...

背景在使用富士施乐的一体机中(其他厂商的一体机 也类似),很多人的网络环境是动态IP的,即打印的IP地址是不固定的,随着每次开机或关机会变化,从而经常有人反应打印机不能打印或者扫描了。。总体思路1. 检查当前的IP设置2. 把相应的…

springboot2.5.5配置mybatis

【README】 1.本文记录了 springboot2.5.5 配置 mybatis的步骤; 2.配置mybatis 分为注解和配置两种方式; 3.引入mybatis,包括了 创建springbt项目;druid数据源配置;数据库表与javabean;mybatis配置与sq…

Java命令学习系列(三)——Jmap

转载自 Java命令学习系列(三)——Jmapjmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在Java命令学习系列(零)——常见命…

skimage直方图如何保存_LightGBM的参数详解以及如何调优

lightGBM可以用来解决大多数表格数据问题的算法。有很多很棒的功能,并且在kaggle这种该数据比赛中会经常使用。但我一直对了解哪些参数对性能的影响最大以及我应该如何调优lightGBM参数以最大限度地利用它很感兴趣。我想我应该做一些研究,了解更多关于li…

基于springboot2.5.5自建启动器starter制品库

【README】 本文po出了自建springboot 启动器步骤; 【1】新建2个starter相关组件 根据 mybatis-spring-boot-starter,我们看到 自建starter需要两个组件,分别是 xxx-spring-boot-starter, xxx-spring-boot-starter-autoconfigu…

Java命令学习系列(二)——Jstack

转载自 Java命令学习系列(二)——Jstackjstack是java虚拟机自带的一种堆栈跟踪工具。功能 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出…

python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码

一、写在前面 前几天在微信上看到这样一篇文章,链接为:https://www.jb51.net/it/692145.html,在这篇文章中,有这样一段话,吸引了我的注意:在 Linux 中 ls 是一个使用频率非常高的命令了,可选的参…

spring中stereotype注解Component,Repository,Service,Controller

【README】 本文介绍了 spring4.0 下 org.springframework.stereotype 的注解类型,俗称刻板型注解(一成不变型); 包括 Component, Repository,Service, Controller ; 目录 【REA…

[中级]Java命令学习系列(五)——jhat

转载自 [中级]Java命令学习系列(五)——jhatjhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。之前的文章讲到过,使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式…

转:IDEA 创建类注释模板和方法注释模板

转自: IDEA 创建类注释模板和方法注释模板 - 简书  在使用Idea的时候,它的注释模板很简单,不够详细;所有大多数开发者都想设置一个比较详细的注释模板,我现在把我了解的创建类注释模板和方法注释模板的操作记录下来…

mappedbytebuffer_Java NIO Buffer【MappedByteBuffer】概述与FileChannel的联系

“ NIO【Non-blocking IO非阻塞式IO】,可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似,主要…

[初级]Java命令学习系列(六)——jinfo

转载自 [初级]Java命令学习系列(六)——jinfojinfo可以输出java进程、core文件或远程debug服务器的配置信息。这些配置信息包括JAVA系统参数及命令行参数,如果进程运行在64位虚拟机上,需要指明-J-d64参数,如:jinfo -J-…