Docker学习(九)Volumn容器间共享数据
Docker学习(九)Volumn容器间共享数据

volume是什么
volume在英文中是容量的意思, 在docker中是数据卷的意思,是用来保存数据的容器
为什么要进行数据共享

在集群中有多台tomcat,对于集群中的tomcat部署的代码是同一份代码的副本,如果页面文件发生变化,意味着每个容器中的页面文件都要进行更新,在大规模的集群中这样的工作量会被无限放大,这时候就需要用到数据共享解决此问题,所谓数据共享指的是多个容器共享一个数据副本,在docker环境中我们该如何实现?
数据共享原理
在宿主机的硬盘上开辟一个空间,用来存放共享的数据,多个容器共享这个目录
实现数据共享的解决方案
说到数据共享我们其实很容易想到linux中的mount命令,通过挂载一共享目录来
- [x] 使用参数
-v 宿主机目录:/容器内容目录将共享的文件放在宿主机的某个文件中,然后多个容器之前共享这一个目录,实现数据共享,这需要在启动时

- [x] 使用参数
-v 宿主机目录:/容器内容目录共享容器挂载宿主机共享目录,然后通过挂载共享容器实现数据共享

容器直接挂载共享目录
资源列表
准备2个tomcat容器:
tomcat8000 tomcat8001
详细步骤
创建共享数据
创建共享目录:mkdir -p /usr/local/docker/volumn/pages/
在共享目录中增加共享文件: index.html,内容如下我是一个volumn 共享目录 albk!
创建
tomcat8000和tomcat8001docker run -d --name tomcat8000 -p 8000:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcatdocker run -d --name tomcat8001 -p 8001:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcat
启动容器时将宿主机的
/usr/local/docker/volumn目录,挂载到tomcat容器的/usr/local/tomcat/webapps这个目录,这样就可以实现数据共享
- 验证容器是否正常启动
docke ps

docker exec -it a05a987b6da0 /bin/bash
查看一下webapps目录下,是否挂载成功


- 修改共享文件
echo "我是一个volumn 共享目录 albk! 被修改了" > index.html - 浏览器再次验证

可以看到我们修改的内容,已经实时生效了,不需要重新部署tomcat容器,但是这样实现每次容器启动的时候,参数会很长,很容易出错,在集群较小的时候可以这样,但是规模大的时候,这也是不少的工作量,下面我们看一下另一种方法
共享容器挂载
创建一个共享容器
webpages,通过上述的方法,使用-v 挂载共享目录
docker create --name webpages -v /usr/local/docker/volumn/pages:/usr/local/tomcat/webapp tomcat /bin/true挂载共享容器
docker run --name tomcat8000 -d -p 8000:8080 --volumes-from webpages tomcat
docker run --name tomcat8001 -d -p 8001:8080 --volumes-from webpages tomcat验证过程和上面的一样,容器webpages实际作用就是定义了一个挂载点,修改内容的时候,只需要修改共享容器的共享目录即可
总结
如果容器少的话用-v 如果容器多的话, 可以使用-volumes-from 本质与-v是一样的,具体使用哪个根据实际情况而定
写在最后
相关文章会首发公众号,可以关注公号albk,关注后可以获取大量学习视频
期望热爱技术的你一起来交流,获取最新资料和学习资源,可以关注公众号albk, 个人博客 !
Docker学习(九)Volumn容器间共享数据的更多相关文章
- Qt学习:线程间共享数据(使用信号槽传递数据,必须提前使用qRegisterMetaType来注册参数的类型)
Qt线程间共享数据主要有两种方式: 使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的: 使用singal/slot机制,把数据 ...
- 详解 Qt 线程间共享数据(用信号槽方式)
使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的. Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容.Qt线程间共享 ...
- 进程间共享数据Manager
一.前言 进程间的通信Queue()和Pipe(),可以实现进程间的数据传递.但是要使python进程间共享数据,我们就要使用multiprocessing.Manager. Manager()返回的 ...
- Disruptor 线程间共享数据无需竞争
队列的作用是缓冲 缓冲到 队列的空间里.. 线程间共享数据无需竞争 原文 地址 作者 Trisha 译者:李同杰 LMAX Disruptor 是一个开源的并发框架,并获得2011 Duke’ ...
- 详解 Qt 线程间共享数据(使用signal/slot传递数据,线程间传递信号会立刻返回,但也可通过connect改变)
使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的. Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容.Qt线程间共享 ...
- laravel5.5框架中视图间如何共享数据?视图间共享数据的两种方法
laravel框架中视图间共享数据有两种,一种是用视图门面share()方法实现,另一种是用视图门面composer() 方法实现,那么,两种方法的实现究竟是怎样的呢?让我们来看一看接下来的文章内容. ...
- python 进程间共享数据 (二)
Python中进程间共享数据,除了基本的queue,pipe和value+array外,还提供了更高层次的封装.使用multiprocessing.Manager可以简单地使用这些高级接口. Mana ...
- python 进程间共享数据 (一)
def worker(num, mystr, arr): num.value *= 2 mystr.value = "ok" for i in range(len(arr)): a ...
- contentprovider提供程序间共享数据的统一接口
contentprovider提供程序间共享数据的统一接口
随机推荐
- HDU - 6333 Problem B. Harvest of Apples (莫队)
There are nn apples on a tree, numbered from 11 to nn. Count the number of ways to pick at most mm a ...
- SPA+.NET Core3.1 GitHub第三方授权登录 使用AspNet.Security.OAuth.GitHub
GitHub第三方授权登录 使用SPA+.NET Core3.1实现 GitHub第三方授权登录 类似使用AspNet.Security.OAuth.GitHub,前端使用如下:VUE+Vue-Rou ...
- CP防火墙升级和打补丁
CP防火墙的升级和打补丁可以在命令行下操作,也可以在web ui下进行,CP的升级首先得升级Deployment Agent软件 Step1:升级Deployment Agent ========== ...
- CentOS7.6部署k8s环境
CentOS7.6部署k8s环境 测试环境: 节点名称 节点IP 节点功能 K8s-master 10.10.1.10/24 Master.etcd.registry K8s-node-1 10.10 ...
- int32 无符号范围 -2147483648~2147483647
int32 无符号范围 -2147483648~2147483647
- ASP.NET WebForm Identity使用
环境 win10企业版x64+visual studio 2017+.net 4.5 step1 基本使用+邮件确认+密码重置 https://docs.microsoft.com/en-us/asp ...
- 025.MFC_窗口操作
窗口操作 一.建立名为dialogOp 的mfc 工程 ,添加9个button 和1个check box组件,并按如图修改caption属性. 最大化窗口 双击最大化button,进入dialogOp ...
- Swagger Editor 本地搭建
看了很多文章,怎么本地安装都比较乱,一番折腾,最后终于成功本地搭建Swagger Editor,记录如下(Windows 7): 进入命令行: (1)cd E:\Learning\AWS (2)git ...
- Ambari+HDP+HDF离线安装包下载清单
Ambari 2.7.3 Repositories OS Format URL RedHat 7 CentOS 7 Oracle Linux 7 Base URL http://public-repo ...
- centos7搭建Fabric基础环境
一.首先升级centos最新内核 参考https://www.cnblogs.com/sky-cheng/p/12146054.html 二.卸载旧版本docker [root@localhost ~ ...