天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
Docker创建tomcat容器实例后无法访问
- 一、场景重现
- 1. docker拉取tomcat镜像
- 2. 查看拉取的镜像
- 3. 运行镜生成容器并运行,同时像映射端口
- 4. 查看本机ip
- 5. 访问tomcat在本机的映射地址
- 二、分析
- 1. 进入tomcat容器
- 2. 查看当前目录
- 3. 查看webapps目录内容
- 三、思路
- 1. 修改weapps
- 2. 使用旧版tomcat
- 四、解决
- 方案一
- 1. 删除webapps目录
- 2. 修改webapps.dist为webapps
- 3. 再次访问
- 方案二
- 1. 搜索镜像
- 2. 拉取tomcat9镜像
- 3. 查看镜像
- 4. 运行镜像生成容器实例
- 5. 查看已运行的容器
- 6. 访问网址
一、场景重现
1. docker拉取tomcat镜像
docker pull tomcat
不指定版本默认拉取的最新的latest版本
2. 查看拉取的镜像
docker images
3. 运行镜生成容器并运行,同时像映射端口
docker run --name tomcat-libai -it -p 9999:8080 -d tomcat
查看运行的容器
docker ps
看到容器正在运行,且端口映射为9999
4. 查看本机ip
ifconfig
如果没安装net-tools会提示安装
sudo apt install net-tools
5. 访问tomcat在本机的映射地址
172.20.10.13:9999
访问时页面是404
二、分析
首先我们拉取镜像的时候没有指定版本,默认为最新的版本tomcat:latest
那么这个版本有什么特别的地方呢
我们都知道tomcat访问界面的index.jsp文件是在webapps目录下的
我们进入容器,查看一下tomcat目录下的webapps文件夹下有什么东西
1. 进入tomcat容器
docker exec -it tomcat-libai /bin/bash
2. 查看当前目录
看到webapps以及webapps.dist两个目录
ls -l
3. 查看webapps目录内容
//进入webapps目录,
cd webapps
//查看webapps目录内容
ls -l
发现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
1. 删除webapps目录
rm -rf webapps
2. 修改webapps.dist为webapps
mv webapps.dist webapps
3. 再次访问
172.20.10.13:9999
可正常访问,我们也能看到的确是tomcat最新的版本10.0.14
方案二
使用8或者9的tomcat版本
如果在容器内可输入exit退出容器
1. 搜索镜像
在仓库中搜索tomcat9的版本
docker search tomcat9
2. 拉取tomcat9镜像
拉取自己要用的镜像,我这里使用donglsheng/tomcat9_jdk8这个
docker pull donglsheng/tomcat9_jdk8
3. 查看镜像
拉取后查看镜像
docker images
4. 运行镜像生成容器实例
docker run --name tomcat9-libai -it -p 8888:8080 -d oupula/tomcat9_jdk8
5. 查看已运行的容器
docker ps
6. 访问网址
172.20.10.13:8888
可正常访问,tomcat版本为9.0.12