Docker安装Tomcat无法访问

问题出现

在服务器上使用docker安装tomcat时遇到了无法访问tomcat的问题。是因为使用docker pull tomact 下载的tomcat镜像中包含有两个webapps 文件夹。一个文件夹名为webapps,但是这个文件夹是空的,另外一个文件夹名为webapps.dist,里面有tomcat完整的文件夹和文件。

图示:
Docker安装Tomcat无法访问_第1张图片

问题重现

1、使用docker下载tomcat镜像

docker pull tomcat:9

图示:
在这里插入图片描述

2、创建tomcat容器

docker run -d -p 8080:8080 tomcat:9

图示:
在这里插入图片描述

3、tomcat容器已经运行,但是还是无法访问tomcat的首页。
在这里插入图片描述

4、立刻查看防火墙端口和ECS安全组的情况。

查看防火墙状态

systemctl status firewalld

开启防火墙

systemctl start firewalld

查看端口信息

firewall-cmd --list-ports  # 只看端口信息

开启端口和重启防火墙

开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙:systemctl restart firewalld.service

查看安全组情况
Docker安装Tomcat无法访问_第2张图片

注意:防火墙8080 端口开了并且阿里云安全组也开放了才能访问远程。

5、以上步骤都没问题,进入容器内部,发现两个webapps。

docker exec -it 53724a20a48c /bin/bash

其中webapps文件夹为空,而webapps.dist包含完整的tomcat文件。
Docker安装Tomcat无法访问_第3张图片

6、将目录下webapps.dist里文件复制到webapps。然后将webapps.dist删除.

cp -r webapps.dist/* ./webapps
rm -rf webapps.dist

7、结果
Docker安装Tomcat无法访问_第4张图片

注意

tomcat容器停止重新启动后,还会出现这两个文件夹。

解决方案

对于以上出现的问题,可以通过commit操作创建自己的镜像就可以完美的避开此类情况的出现。

docker commit 从容器创建一个新的镜像。

语法:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a 提交的镜像作者
  • -c 使用Dockerfile指令来创建镜像
  • -m 提交时的说明文字
  • -p 在commit时,将容器暂停

操作步骤

1、创建镜像

docker commit -a="guardwhy" -m="kobe is mvp" 53724a20a48c tomcat9:9.1

图示:
Docker安装Tomcat无法访问_第5张图片

2、创建tomcat容器

docker run -d -p 8081:8080 6b8b40011890

3、进入到容器内部查看。

docker exec -it 459677594ee1  /bin/bash

图示:
Docker安装Tomcat无法访问_第6张图片

4、结果
Docker安装Tomcat无法访问_第7张图片

你可能感兴趣的:(docker)