之前我们聊过docker的基本使用,我们通过docker命令部署了tomcat哈,也看到了我们熟悉的汤姆猫,但是哈,docker的功能远不止于此,今天来说说docker的数据卷
我们先来分析一下,不使用会有什么影响,大伙都知道,我们的war包呢在webapp下存放,那么如果我们需要迭代版本,就要修改原来的包,docker启动后是一个小型容器,即我们要进入容器,换掉旧包,那么我们来操作一下吧
回顾&环境搭建
首先启动一个tomcat

然后调整容器中的webapp文件,先看到我们熟悉的汤姆猫,上篇文章说过,默认是空的

机器ip是10.10.10.10,访问10.10.10.10:8080

我们把里面的文件简洁一下
- 删掉所有文件
- 创建test工程
- 创建index.html文件,随便写点东西

看看效果

言归正传
现在我们要升级,新的包内容是Hello Tomcat-2!
那么就要把新的包复制到容器中/usr/local/tomcat/webapps下,我们来操作一下
这个文件已经准备好了,在任意目录创建test工程,里面创建index.html文件,内容为Hello Tomcat-2!,(模拟项目哈,这不是重点)

将这个项目复制到容器中
命令:
docker cp 文件 容器id:路径
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i5qL1VXQ-1675755672508)(pictures/image-20230207142825982.png)]](https://i-blog.csdnimg.cn/blog_migrate/daeed2d82a875dc62178ee710a8528bb.png)
看看页面,已经更新了

存在问题:
- 可以实现、但是较麻烦
- 还需要知道容器内文件的路径
- 查看日志不方便,需要进入容器查看
那么有没有一种简单的方式呢,容器之间有一种数据共享技术,将容器中的数据挂载到宿主机上,这就是卷技术,简单来说,卷技术能够让你的宿主机与容器中的两个目录文件保持一致,类似于双向绑定
删掉旧的,重新创建容器,并挂载数据卷
命令,挂载两个卷,一个是项目目录,一个是日志目录
docker run -d -p 8080:8080 -v /root/test:/usr/local/tomcat/webapps/test -v /root/tomcatlogs:/usr/local/tomcat/logs --name cxs-tomcat-demo tomcat:9

查看页面,发现还是之前的

那现在我们将文件改成Hello Tomcat-3!就简单了,直接修改宿主机挂载的/root/test目录下的内容即可,docker会自动同步到容器中

效果

我们来看一下服务日志吧

结语
- 数据卷极大的减少了我们的工作量
- docker内容还有很多,网络、容器编排,后续会持续更新
- 公众号:全栈小白
文章介绍了Docker数据卷在容器数据持久化和管理中的重要性。通过实例展示了不使用数据卷时,更新应用版本和查看日志的繁琐过程,然后引入数据卷技术,实现宿主机与容器之间的双向绑定,简化了文件同步和日志查看,大大提高了工作效率。





