Docker下安装Tomcat总结及遇到的坑

一、在linux虚拟机上安装Docker

  1. 检查内核版本,必须是3.10及以上
uname ‐r 
  1. 安装docker
yum install docker 
  1. 启动docker
 [root@localhost ~]# systemctl start docker 
 [root@localhost ~]# docker ‐v Docker version 1.12.6, build 3e8e77d/1.12.6 
  1. 可以设置开机自启动docker
[root@localhost ~]# systemctl enable docker 
Created symlink from /etc/systemd/system/multi‐user.target.wants/docker.service to  /usr/lib/systemd/system/docker.service.
  1. 停止docker
systemctl stop docker

二、Docker常用命令&操作

操作命令说明
检 索docker search 关键字
eg:docker search tomcat
检索目标镜像
拉取docker pull 镜像名:tag:tag是可选的,tag表示标签,多为软件的版本,默认 是latest
查看docker images查看所有本地镜像
删 除docker rmi image-id删除指定的本地镜像

三、安装Tomcat容器及其他相关操作

  1. 搜索镜像
 [root@localhost ~]# docker search tomcat 
  1. 拉取镜像
[root@localhost ~]# docker pull tomcat 

若出现“Get https://registry-1.docker.io/v2/: net/http: request canceled”提示或下载过慢问题:

vim /etc/docker/daemon.json

里面自带一个“{}”,替换成:

{
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}

然后~

systemctl daemon-reload
systemctl restart docker
  1. 根据镜像启动容器
 [root@localhost ~]# docker run ‐‐name mytomcat ‐d ‐p 8888:8080 镜像名/镜像id

说明:
–name 容器名称
‐d:后台运行
‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
此时Tomcat已经正常运行

  1. 查看运行中的容器
 [root@localhost ~]# docker ps  
  1. 停止运行中的容器
[root@localhost ~]# docker stop  容器的id 
  1. 查看所有的容器详情
[root@localhost ~]# docker ps ‐a 
  1. 启动容器
[root@localhost ~]# docker start 容器id 
  1. 删除一个容器
 [root@localhost ~]# docker rm 容器id 
  1. 关闭linux的防火墙(也可以不关闭防火墙,开放某个端口)

查看防火墙状态

  systemctl status firewalld;

①直接关闭防火墙

systemctl stop firewalld

② 仅开放端口号

  • 设置开放的端口号(TCP 80端口)
firewall-cmd --add-port=80/tcp --permanent 

–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

  • 重启防火墙 (重启后端口才有效)
firewall-cmd --reload
  • 查看开放的端口号
firewall-cmd --list-all 
  • 关闭端口
firewall-cmd --remove-port=80/tcp --permanent 
  1. 查看容器的日志
docker logs 容器名/容器id
  1. 启动MySql容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d 镜像id

更多命令参看 https://docs.docker.com/engine/reference/commandline/docker/ 可以参考每一个镜像的文档

四、遇到的坑

当Tomcat版本过高时,根据IP地址和端口号访问可能会出现下面问题:在这里插入图片描述
出现404是因为webapps文件夹下内容为空,内容都在webapps.dist 目录下
这里给出一种解决办法:

  1. 进入Tomcat容器
docker exec -it 容器id /bin/bash
  1. ls 查看文件夹内容,可以发现下面有webapps文件夹和webapps.dist文件夹,将webapps.dist下的内容全部复制到webapps中
cp -r webapps.dist/* webapps

重新访问Tomcat
Okay!
在这里插入图片描述

五、部署项目到Tomcat

复制宿主机war包到tomcat容器的webapps文件夹中

docker cp xxx.war mytomcat:/usr/local/tomcat/webapps

重启容器

docker restart mytomcat

如果项目中需要访问宿主机或远程服务器的MySQL时,可能会报错:java.net.NoRouteToHostException: No route to host

容器中的app无法访问到宿主机的MySQL,因为两者不在一个网络内。最简单的方式是在启动docker时增加--net=host选项,这样容器就和宿主机共用网络,容器中的app也就能访问MySQL了。

docker run --net=host --name mytomcat  -d -p 8080:8080 8391ef8f6ae4 

在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值