问题描述
最近在阿里云ecs上使用docker安装tomcat时遇到了无法访问tomcat的问题,原因比较无语,是从 hub.docker中下载的最新版tomcat镜像中包含有两个webapps 文件夹。一个文件夹名为webapps,但是这个文件夹是空的,里面什么也没有。另外一个文件夹名为webapps.dist,里面有tomcat完整的文件夹和文件。将空的文件夹删除,然后重命名webapps.dist为webapps即可访问到tomcat的首页。
问题重现及解决
问题重现
使用如下命令下载tomcat最新版镜像
docker pull tomcat
下载完成后如图所示:
输入如下命令使用tomcat镜像创建tomcat容器:
docker run -d -p 8080:8080 tomcat
此时tomcat容器已经运行,但是还是无法访问tomcat的首页,当然这都是已经排除防火墙和ecs安全组等相关情况的前提下;
进入到容器内部:
docker exec -it 52970cb0cb10 /bin/bash
此时就能看到如图中的两个文件夹。其中webapps文件夹为空,而webapps.dist包含完整的tomcat文件
按照问题描述删除和重命名文件夹之后,这个问题即可解决!
注意:tomcat容器停止重新启动后,还会出现这两个文件夹,难道以上步骤还得重来一遍吗?
对于以上问题,答案当然是否定的,我们只需要通过commit操作创建自己的镜像就可以了。
以上运行中的容器是我们可以访问tomcat首页后的容器,通过如下命令格式将该运行的容器创建为我们自己的镜像。
## docker commit的命令格式
docker commit -a="作者名" -m="描述信息" 容器ID 要创建的目标镜像名:[标签名]
docker commit -a="zhangsan" -m="tomcat can access" dfceb5e5582f tomcat8:8.8
执行后就可以看到我们自己创建的镜像了
通过我们自己创建的镜像创建tomcat容器:
docker run -d -p 8081:8080 444a57af95da
执行完命令之后我们通过浏览器访问tomcat首页可能还是无法访问到,进入到容器内部查看也是只有webapps
但是为什么还是访问不到呢,不要担心,其实不是我们访问不到,只是容器还没有完全启动起来,我们只需要稍等片刻,就能访问得到了。