Docker Volumn容器间共享数据的实现
volume是什么
volume在英文中是容量的意思,在docker中是数据卷的意思,是用来保存数据的容器
为什么要进行数据共享
在集群中有多台tomcat,对于集群中的tomcat部署的代码是同一份代码的副本,如果页面文件发生变化,意味着每个容器中的页面文件都要进行更新,在大规模的集群中这样的工作量会被无限放大,这时候就需要用到数据共享解决此问题,所谓数据共享指的是多个容器共享一个数据副本,在docker环境中我们该如何实现?
数据共享原理
在宿主机的硬盘上开辟一个空间,用来存放共享的数据,多个容器共享这个目录
实现数据共享的解决方案
说到数据共享我们其实很容易想到linux中的mount命令,通过挂载一共享目录来
[x]使用参数-v宿主机目录:/容器内容目录将共享的文件放在宿主机的某个文件中,然后多个容器之前共享这一个目录,实现数据共享,这需要在启动时
[x]使用参数-v宿主机目录:/容器内容目录共享容器挂载宿主机共享目录,然后通过挂载共享容器实现数据共享
容器直接挂载共享目录
资源列表
准备2个tomcat容器:
tomcat8000tomcat8001
详细步骤
创建共享数据
创建共享目录:mkdir-p/usr/local/docker/volumn/pages/
在共享目录中增加共享文件:index.html,内容如下
我是一个volumn共享目录albk!
创建tomcat8000和tomcat8001
dockerrun-d--nametomcat8000-p8000:8080-v/usr/local/docker/volumn:/usr/local/tomcat/webappstomcat dockerrun-d--nametomcat8001-p8001:8080-v/usr/local/docker/volumn:/usr/local/tomcat/webappstomcat
启动容器时将宿主机的/usr/local/docker/volumn目录,挂载到tomcat容器的/usr/local/tomcat/webapps这个目录,这样就可以实现数据共享
验证容器是否正常启动
dockeps
dockerexec-ita05a987b6da0/bin/bash
查看一下webapps目录下,是否挂载成功
浏览器访问
http://宿主机ip:8000/pages/index.html
http://宿主机ip:8001/pages/index.html
修改共享文件
echo"我是一个volumn共享目录albk!被修改了">index.html
浏览器再次验证
可以看到我们修改的内容,已经实时生效了,不需要重新部署tomcat容器,但是这样实现每次容器启动的时候,参数会很长,很容易出错,在集群较小的时候可以这样,但是规模大的时候,这也是不少的工作量,下面我们看一下另一种方法
共享容器挂载创建一个共享容器webpages,通过上述的方法,使用-v挂载共享目录
dockercreate--namewebpages-v/usr/local/docker/volumn/pages:/usr/local/tomcat/webapptomcat/bin/true
挂载共享容器
dockerrun--nametomcat8000-d-p8000:8080--volumes-fromwebpagestomcat dockerrun--nametomcat8001-d-p8001:8080--volumes-fromwebpagestomcat
验证过程和上面的一样,容器webpages实际作用就是定义了一个挂载点,修改内容的时候,只需要修改共享容器的共享目录即可
总结
如果容器少的话用-v如果容器多的话,可以使用-volumes-from本质与-v是一样的,具体使用哪个根据实际情况而定
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。