文章目录
-
-
- 1. 通过防火墙开放指定端口
- 2. 通过docker安装tomcat
- 3. 解决docker启动tomcat主页报错404的问题
- 4. 彻底解决docker启动tomcat首页报错404问题
- 5. 安装tomcat全过程
-
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问题
在上面操作的基础上:
-
使用:ctrl+p+q不退出容器的方式返回到宿主机目录下
-
使用docker commit命令将修改后的容器生成新的镜像
作用:将运行着的容器映射成新的镜像
格式: docker commit -a=‘作者-这个随意写’ -m=’‘修改内容–随意写’ 容器名称或者ID 新生成镜像的名称
例子:docker commit -a=‘作者名’ -m=‘新的镜像’ 5a4a45f2c196 tomcat01 -
运行新的镜像,访问tomcat首页,发现不会再出现404错误,以后每次创建tomcat容器时,使用我们自己生成的镜像即可(它跟阿里云拉下来的进行并没什么差别,只是保存了我们之前对容器做的修改)
具体步骤:
- 使用:ctrl+p+q不退出容器的方式返回到宿主机目录下
- docker commit -a=‘作者名’ -m=‘将修改后的容器映射成新的镜像’ 5a4a45f2c196 tomcat01
- 通过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