一、在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版权协议,转载请附上原文出处链接及本声明。