目录
Docker 是什么
Docker 能干什么
Tomcat容器连接mysql容器主要原理:
操作前的准备(Docker的安装):
开始操作:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker按照字面意思为搬运工,搬运工搬运的是各种容器。而按照个人理解,Docker就像集装箱,集装箱可以装各种各样的物品(塞进容器的应用),当想要用某件物品时,可以很轻松拿到并使用,因为在物品放入集装箱时就已经为你划分好了空间,各个空间不相互干扰。
Docker 存在的意图是让你把各种语言编写的程序应用以带有普适性的形式打包好,你只要拿到打包好的东西,可以忽略程序本身依赖的环境或者开发的语言,直接使用 Docker 便可以运行起来。在这个实际意义之上,最重要的是 Docker 提供了容器技术来隔离多个打包的应用或者服务之间的相互影响,同时由于打包的东西具有普适性,那么在应用规模的层面上也很便于扩展。
1)image镜像
docker镜像就是一个只读模板,当然你也可以看成是一个封装好的系统或者应用。比如,一个镜像可以包含一个完整的centos,里面仅安装apache或其他应用。镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
2)container容器
Docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器互相隔离,以保证平台的安全。可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序。
3)repository仓库
仓库是集中存储镜像文件的一个空间。register是仓库注册服务器,注册服务器上可存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为两种,公有参考和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下载,国内的docker pool,这里仓库的概念与Git类似,register可以理解为github这样的托管服务。
将容器映射到不同的端口上,通过访问端口的形式实现容器与容器之间的互通。
1、安装相关依赖包
安装依赖包:
yum -y install yum-utils device-mapper-persistent-data lvm2
device-mapper存储驱动程序需要device-mapper-persistent-data lvm2
device-mapper时内核种逻辑卷管理的通用设备映射机制
2、设置镜像源(这边选择的是阿里的镜像源)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker -ce
yum -y install docker-ce
4.检验docker 是否安装成功
docker version
5、docker的配置:
若是/etc/docker目录下不存在daemon.json 请自行创建一个(touch /etc/docker/daemon.json)
写入内容(阿里的加速源):
{
"registry-mirrors":["https://xxxxxxxxx.mirror.aliyuncs.com"]
}
其作用主要用于镜像服务加速
添加后重载系统参数即重启服务:
systemctl daemon-reload
systemctl restart docker.service
1、拉取tomcat镜像:(当然你也可以查看tomcat的共享镜像及相关版本:docker search tomcat 选择合适的版本)
docker pull tomcat:8.5.38 (tomcat:版本号)
2、制作tomcat 容器:(命令大致意思为将镜像塞进容器并命名为tomcat映射到8080端口)
docker run --name tomcat -p 8080:8080 -d tomcat:8.5.38
(-name 容器名 -p端口映射 -d后台运行)
3、开放防火墙8080端口:(防止防火墙拦截访问服务器8080端口的用户,当然最好就是把他给关掉:systemctl stop firewalld.service(防火墙会禁止服务器一些端口的访问权))
firewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld.service
运行容器:(在创建容器时已经处于运行状态,不需要考虑再通过命令让容器运行。假如系统重启后需要运行容器后才能对容器进行相关操作)
测试tomcat运行状态:
4、拉取mysql镜像:(与tomcat一样自行选择合适的版本)
docker pull mysql:5.7.33
5、制作mysql容器:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.33
#--name 是创建好的容器命名
#-p 端口映射 Linux防火墙的端口号:容器内的端口
#-d 后台运行
#-e 设置参数(将mysql初始默认密码设置为123456)
6、运行进入mysql并创建一个数据库:(新建的数据主要用于导入.sql文件命名时需要与你war包数据库名字相同)
docker exec -ti ID bash ID指的是容器ID也可以使用容器名(进入mysql容器)
mysql -uroot -p123456 进入mysql -u 用户 -p 密码
create database 数据库名 default charset=utf8; (有引号才算完整sql语句)
7、开放防火墙3306端口:
firewall -cmd --zone=public --and-port=3306/tcp --permanent
systemctl restart firewalld.service
测试连接:(用数据库工具或者浏览器直接访问的形式也行与访问tomcat类似但是界面不同)
8、将web包导入tomcat:(主要流程将你java项目转成war包(可以不用转将整个项目文件夹塞进去也行)传输至本机然后运行容器将war包放入tomcat /webapps的目录下)
docker cp c95200dfbcf6:/usr/local/tomcat/webapps
注意说明:tomcat /webapps目录用于存放web项目,请事先修改好web项目包内与数据库连接用的文件例如:
测试导入的web包:
9、将sql文件导入mysql测试:
docker cp /home/shop1.sql ID:/ 将文件塞进mysql容器
docker exec -it ID bash 进入容器
mysql -uroot -p123456 数据库名<.sql文件 将.sql文件导入数据库
10、新建shop1数据库并导入shop1.sql:
说明:若事先创建好了web包对应的数据库名直接上一步导入即可,若无可新建一个。导入方式参考上面一些步骤。
Tomcat连接到数据库并显示数据库内容:
后台与数据库联动
参考博客:CentOS7使用docker搭建测试环境,docker内安装tomcat和mysql(详细图文介绍)_iruance_ye的博客-CSDN博客_docker容器内安装tomcat
https://blog.csdn.net/u013007900/article/details/62219169
终于有人把 Docker 讲清楚了,万字详解!【建议收藏】_程序员大咖的博客-CSDN博客