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

一、在linux虚拟机上安装Docker

检查内核版本,必须是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

2

可以设置开机自启动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

2

停止docker

systemctl stop docker

1

二、Docker常用命令&操作

操作命令说明

检 索docker search 关键字

eg:docker search tomcat检索目标镜像

拉取docker pull 镜像名:tag:tag是可选的,tag表示标签,多为软件的版本,默认 是latest

查看docker images查看所有本地镜像

删 除docker rmi image-id删除指定的本地镜像

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

搜索镜像

[root@localhost ~]# docker search tomcat

1

拉取镜像

[root@localhost ~]# docker pull tomcat

1

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

vim /etc/docker/daemon.json

1

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

{

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

}

1

2

3

然后~

systemctl daemon-reload

systemctl restart docker

1

2

根据镜像启动容器

[root@localhost ~]# docker run ‐‐name mytomcat ‐d ‐p 8888:8080 镜像名/镜像id

1

说明:

–name 容器名称

‐d:后台运行

‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口

此时Tomcat已经正常运行

查看运行中的容器

[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;

1

①直接关闭防火墙

systemctl stop firewalld

1

② 仅开放端口号

设置开放的端口号(TCP 80端口)

firewall-cmd --add-port=80/tcp --permanent

1

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

重启防火墙 (重启后端口才有效)

firewall-cmd --reload

1

查看开放的端口号

firewall-cmd --list-all

1

关闭端口

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

1

更多命令参看 docker | Docker Documentation 可以参考每一个镜像的文档

四、遇到的坑

当Tomcat版本过高时,根据IP地址和端口号访问可能会出现下面问题:

出现404是因为webapps文件夹下内容为空,内容都在webapps.dist 目录下

这里给出一种解决办法:

进入Tomcat容器

docker exec -it 容器id /bin/bash

1

ls 查看文件夹内容,可以发现下面有webapps文件夹和webapps.dist文件夹,将webapps.dist下的内容全部复制到webapps中

cp -r webapps.dist/* webapps

1

重新访问Tomcat

Okay!

五、部署项目到Tomcat

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

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

1

重启容器

docker restart mytomcat

1

如果项目中需要访问宿主机或远程服务器的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

————————————————

版权声明:本文为CSDN博主「`子非鱼`」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:Docker下安装Tomcat总结及遇到的坑_`子非鱼`的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值