(CentOS 7)Docker启动tomcat,但访问首页出现404

1. 通过防火墙开放指定端口

1、查看防火墙状态:

firewall-cmd --state

2、开启防火墙:

systemctl start firewalld.service

3、开机自启防火墙:

systemctl enable firewalld.service

4、关闭防火墙:

systemctl stop firewalld.service

5、通过防火墙开启特定端口

开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service
 
命令含义:
--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效

6、查看防火墙开启的端口

firewall-cmd --list-ports

在这里插入图片描述

2. 通过docker安装tomcat

 docker run -d -p 80:8080 tomcat
 -d:后台运行
-p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口

在这里插入图片描述

3. 解决docker启动tomcat主页报错404的问题

1、使用命令: docker exec -it 运行的tomcat容器ID /bin/bash 进入到tomcat的目录
2、进入webapps文件夹,发现里面是空的(tomcat默认的欢迎页面实际上放在的路径应该是:webapps/ROOT/index.jsp或者index.html)
3、进入webapps.dist的文件,发现原本应该在webapps文件中的文件都在webapps.dist文件中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是这种方式没有新根本上解决问题,因为只要容器关闭,再次启动容器时访问tomcat主页仍然会报错404,所以需要从根源上解决这个问题。

4. 彻底解决docker启动tomcat首页报错404问题

在上面操作的基础上:

  1. 使用:ctrl+p+q不退出容器的方式返回到宿主机目录下

  2. 使用docker commit命令将修改后的容器生成新的镜像
    作用:将运行着的容器映射成新的镜像
    格式: docker commit -a=‘作者-这个随意写’ -m=’‘修改内容–随意写’ 容器名称或者ID 新生成镜像的名称
    例子:docker commit -a=‘作者名’ -m=‘新的镜像’ 5a4a45f2c196 tomcat01

  3. 运行新的镜像,访问tomcat首页,发现不会再出现404错误,以后每次创建tomcat容器时,使用我们自己生成的镜像即可(它跟阿里云拉下来的进行并没什么差别,只是保存了我们之前对容器做的修改)

具体步骤:

  1. 使用:ctrl+p+q不退出容器的方式返回到宿主机目录下
    在这里插入图片描述
  2. docker commit -a=‘作者名’ -m=‘将修改后的容器映射成新的镜像’ 5a4a45f2c196 tomcat01
    在这里插入图片描述
    在这里插入图片描述
  3. 通过docker运行tomcat01,并访问首页:
    在这里插入图片描述
    在这里插入图片描述

5. 安装tomcat全过程

[root@192 ~]# sudo systemctl start docker
[root@192 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.16
 Git commit:        369ce74a3c
 Built:             Thu Feb 13 01:29:29 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.6
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.16
  Git commit:       369ce74a3c
  Built:            Thu Feb 13 01:28:07 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[root@192 ~]# vi /etc/docker/daemon.json
[root@192 ~]# sudo systemctl restart docker

[root@192 ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
50e431f79093: Pull complete 
dd8c6d374ea5: Pull complete 
c85513200d84: Pull complete 
55769680e827: Pull complete 
e27ce2095ec2: Pull complete 
5943eea6cb7c: Pull complete 
3ed8ceae72a6: Pull complete 
91d1e510d72b: Pull complete 
98ce65c663bc: Pull complete 
27d4ac9d012a: Pull complete 
Digest: sha256:2c90303e910d7d5323935b6dc4f8ba59cc1ec99cf1b71fd6ca5158835cffdc9c
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
[root@192 ~]# docker run -d -p 80:8080 tomcat
d2ea265daf5d85f6e466730c84ae2bca747b33c539359e55bdbfa4e29108bbc6
[root@192 ~]# firewall-cmd --state
running
[root@192 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@192 ~]# systemctl restart firewalld.service
[root@192 ~]# firewall-cmd --list-ports
80/tcp
[root@192 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
d2ea265daf5d        tomcat              "catalina.sh run"   2 minutes ago       Up 2 minutes        0.0.0.0:80->8080/tcp   awesome_shamir
[root@192 ~]# docker exec -it d2ea265daf5d  /bin/bash
root@d2ea265daf5d:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf     lib   native-jni-lib  webapps	   work
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      include  logs  temp	     webapps.dist
root@d2ea265daf5d:/usr/local/tomcat# mv webapps webapps2
root@d2ea265daf5d:/usr/local/tomcat# mv webapps.dist/ webapps
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我一直在流浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值