centos8上docker tomcat容器访问报404解决方法
Posted PacosonSWJTU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos8上docker tomcat容器访问报404解决方法相关的知识,希望对你有一定的参考价值。
目录
【README】
1.本文记录了 访问docker tomcat容器报404的解决方法;
2.附带安装tomcat步骤;
【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 daemon
Loaded: 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台机器上; 这就是虚拟化;
以上是关于centos8上docker tomcat容器访问报404解决方法的主要内容,如果未能解决你的问题,请参考以下文章