Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解

使用docker过程中,我们需要查看容器中产生的数据,以及容器与容器之间、容器与主机之前进行数据共享、备份等操作,这里就需要到容器的数据管理。 数据的管理目前提供如下两种方式:
#数据卷 data volumes
#数据卷容器 data volumes containers

一,数据卷
数据卷,说白了就是一个特殊目录,类似linux下对目录或文件进行mount挂载操作,只不过他绕过了文件系统。具有如下特点:
(1) 数据卷可以在容器之间进行共享和重用
(2)对数据卷的更改会立即生效
(3)对数据卷的更新不会影响到镜像  (镜像只读)
(4)卷会一直存在,知道没有容器使用

数据卷的添加可以通过-v 参数来设定,后边跟上目录。一下举例说明:
1,创建一个数据卷/homedata到容器os123中:

[root@docker5 home]# docker  run  -d -ti --name os123   -v  /homedata  centos
[root@docker5 home]# docker  exex  -ti os123 /bin/bash
[root@d1a05a7d5efe /]# ll
total 40
-rw-r--r--. 1 root root 18301 Jun 2 13:27 anaconda-post.log
lrwxrwxrwx. 1 root root 7 Jun 2 13:25 bin > usr/bin
drwxr-xr-x. 5 root root 380 Jun 23 02:42 dev
drwxr-xr-x. 48 root root 4096 Jun 23 02:42 etc
drwxr-xr-x. 2 root root 6 Aug 12 2015 home
drwxr-xr-x. 2 root root 6 Jun 23 02:42 homedata
..
[root@d1a05a7d5efe /]# cd homedata/
[root@d1a05a7d5efe homedata]# ll
total 0
[root@d1a05a7d5efe homedata]# touch  21yunwei.txt ;echo 123>> 21yunwei.txt
[root@d1a05a7d5efe homedata]# cat  21yunwei.txt
123
2,挂载本地服务器上的一个目录/home/data到容器os456 目录/homedata中:
home/data事先里边建立一个文件1.txt并内容hello world

[root@docker5 home]# docker run  -d -ti --name os456 -v /home/data:/homedata centos
9347d5ef84ffc532000df2637ff3280da001573029e826427d3b71cc88aa4703
[root@docker5 home]# docker exec  -ti os456  /bin/bash
[root@9347d5ef84ff homedata]# cd /homedata;cat  1.txt
hello world
通过上边两个容器os123 和os456,基本了解了如何创建数据卷以及如何挂载本地目录到数据卷中。注意,两个容器中的如果是单独挂载的数据卷(即没有挂载同一个数据卷容器),那么数据是互不影响的,进入不同的数据卷相同目录下比如/homedata,内容可以不一样。

注意:删除容器的时候,数据卷不会删除。如果要删除容器的时候同时删除数据卷,需加上-v参数。比如: docker   rm  os456  -v   /homedata

二,数据卷容器
建立的容器很多时候不是单一的,需要容器之间进行数据共享,进行数据同步和更新操作。这样就需要建立一个数据卷容器。
数据卷容器就是一个普通的容器,里边带有设置好的数据卷,专门提供给其他容器挂载使用。 通过–volumes-from 数据卷容器名 来实现。
我有一个网站程序放到了服务器本机的/home/webdata目录 ,下边创建一个数据卷容器webdata,同时将我服务器上的/home/webdata挂载到数据卷容器的/web目录:

[root@docker5 home]# docker  run  -d  -ti  --name webdata   -v  /home/webdata:/home/web  centos
进入容器并查看数据

[root@docker5 home]# docker exec  -ti  webdata  /bin/bash
[root@289598d6e24d /]# cd  /home/web/
[root@289598d6e24d web]# ll
total 7872
drwxr-xr-x. 3 root root      54 Mar 27  2013 META-INF
drwxr-xr-x. 6 root root    4096 Dec 25  2014 WEB-INF
drwxr-xr-x. 3 root root      63 Mar 27  2013 css
drwxr-xr-x. 2 root root    8192 Mar 27  2013 flags
-rw-r--r--. 1 root root      97 Mar 27  2013 index.jsp
drwxr-xr-x. 2 root root    4096 Mar 27  2013 js
drwxr-xr-x. 2 root root       6 Jun 23 03:43 probe
通过这里建立1.txt 并插入内容,可以看到服务器上的/home/webdata数据是同步的。可见容器以及目录挂载都没问题。

[root@docker5 home]# docker  run  -dti --volumes-from webdata --name os147 centos
[root@docker5 home]# docker  run  -dti --volumes-from webdata --name os258 centos
分别创建了两个容器,都通过–volumes-from webdata 挂载了同一个数据卷容器,进入os147 和os258 分别查看/home/web可见数据都是存在的,于是这里就实现了数据的共享同步。

[root@docker5 home]# docker exec  -ti  os147  /bin/bash
[root@b4cfa4c4e11c /]# cd  /home/web/
[root@b4cfa4c4e11c web]# ll
total 7876
-rw-r--r--. 1 root root      11 Jun 23 03:46 1.txt
drwxr-xr-x. 3 root root      54 Mar 27  2013 META-INF
drwxr-xr-x. 6 root root    4096 Dec 25  2014 WEB-INF
drwxr-xr-x. 3 root root      63 Mar 27  2013 css
drwxr-xr-x. 2 root root    8192 Mar 27  2013 flags
-rw-r--r--. 1 root root      97 Mar 27  2013 index.jsp
drwxr-xr-x. 2 root root    4096 Mar 27  2013 js
drwxr-xr-x. 2 root root       6 Jun 23 03:43 probe
说明:
1,可以多次使用–volume-from参数从多个容器挂载多个目录。  也可以从其他已经挂载了数据卷的容器来挂载数据卷(类似传递)。
2,再次强调:如果删除了挂载的容器,数据卷不会被自动删除。如果要删除容器的时候同时删除数据卷,需加上-v参数。

 

三,通过数据卷容器进行数据备份、数据恢复和数据迁移
1,备份:我们创建一个专门用来备份probe的容器:probebak进行备份数据卷容器中的数据,命令如下

docker run  -dti --volumes-from webdata  --name probebak -v /home/web_probebak:/backup   centos tar zcvf /backup/web_probe.tar.gz  /home/web
命令为创建一个专用备份的容器probebak,挂载了数据卷容器webdata,同时将服务器本地目录 /home/web_probebak挂载到了备份容器上的/backup目录容器启动以后,会执行tar zcvf /backup/web_proce.tar.gz /home/web操作,完成服务器上/home/web备份,打包到/backup/web_proce.tar.gz,也就是打包到了/home/web_probebak/web_probe.tar.gz 实现了数据备份。

2,恢复
创建一个容器os999  ,挂载有数据卷 /testdata

[root@docker5 home]# docker run  -v  /testdata --name os999  centos  /bin/bash
再建一个容器,通过–volumes-from os999挂载刚才设置好的数据卷,解压数据:

[root@docker5 home]# docker run --volumes-from os999 -v /home/web_probebak:/backup busybox tar zxvf /backup/web_probe.tar.gz
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
home/web/
home/web/probe.zip
home/web/probe/
home/web/css/
home/web/css/classic/
home/web/css/classic/datasourcetest.css.

时间: 2024-09-25 17:19:21

Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解的相关文章

Docker数据管理之数据备份和恢复配置

Docker数据管理 容器中管理数据主要有两种方式:数据卷和数据卷容器 将本地的目录或者文件挂载到容器内的数据卷中 数据卷是可提供容器使用的特殊目录,他绕过文件系统,可提供多种特性 数据卷可一在容器直接共享和重复使用 数据卷的修改会立刻生效 数据更新不会影响到镜像 卷一直存在,不管容器有没有使用 1,挂载目录 数据卷类似于linux中的mount挂载操作 在使用docker run命令的时候使用-v标记可以在容器内创建一个数据卷,多次使用-v表姐可以创建多个 也可以在docker-compose

《社会调查数据管理——基于Stata 14管理CGSS数据》一3.3 和社会调查有关的术语

3.3 和社会调查有关的术语 数据与调查密不可分,调查是一项生产数据的工作.人口普查.经济普查.学术调查.商业调查等都是重要的数据来源.作为一本关于社会调查数据管理的书,必然会包含一些与之相关的术语和知识点.了解这些术语有助于做好数据管理工作. 定量数据(quantitative data):考察一项事物可从数量和质量两个方面入手,可用于统计分析的数量方面的数据就是定量数据. 定性数据(qualitative data):质量方面的数据就是定性数据. 原始数据(raw data):指的是未经统计

Smart Data Platform ——大数据技术的未来

大数据的概念(Big Data)已经火了5年了,从Google Trends上来看11年以来,关注度一路快速增长,到15年开始逐步持平.实际上大数据已经逐步走过了描绘愿景的阶段,人们期待的是大数据能够真正在各个行业落地,产生巨大的价值.但目前来看创造了明显商业价值的应用还是在互联网,除了搜索以外,杀手级的应用也就两个--精准广告和推荐.TalkingData在大数据领域耕耘了5年,发展非常迅速,在很多传统行业的大数据应用都是居于国内领先地位.但是当我们的业务发展得越来越好,涉及的行业越来越多,客

Smart Data Platform – 大数据技术的未来

大数据的概念(Big Data)已经火了5年了,从Google Trends上来看11年以来,关注度一路快速增长,到15年开始逐步持平.实际上大数据已经逐步走过了描绘愿景的阶段,人们期待的是大数据能够真正在各个行业落地,产生巨大的价值.但目前来看创造了明显商业价值的应用还是在互联网,除了搜索以外,杀手级的应用也就两个--精准广告和推荐.TalkingData在大数据领域耕耘了5年,发展非常迅速,在很多传统行业的大数据应用都是居于国内领先地位.但是当我们的业务发展得越来越好,涉及的行业越来越多,客

一起谈.NET技术,Dojo Data Store——统一数据访问接口

无论在传统的桌面应用还是在主流的互联网应用中,数据始终占据着软件应用中的核心地位.当下,web2.0已经是一个让人们耳熟能详的词汇,而由此带来的数据的开放与共享,引领我们走入了海量数据时代.在今天的互联网上,数据的交互几乎成为了我们的终极诉求,可随之而来的数据多样性,信息的分布式存储及松耦合,以及数据量的几何级规模的膨胀也带来了数据组织上的难度的增大,与此同时,伴随着Ajax, RIA及面向服务的网络应用的发展,其所要求的客户端数据处理逻辑的复杂性不断增加,使得开发难度不断加大. 出于简化数据处

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converte

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converter 7 数据转换 在普通的情况下,数据从后台到前台显示,没有任何变化.看起来是符合逻辑的,但是有可能不是你想要的效果,数据源的数据可能是的低级别的(这里的低级别是说数据比较原始,或者说是数据库可以理解的,不是最终用户可以理解的形式),你不想让他直接显示在界面上.例如:你可能会将数字变成用户可以看懂的形式.或者是想让日期显示成长格式的字符串.如果是这样的话,你需要将数据转换成正确的显示

关于MySQL数据迁移--data目录直接替换注意事项的详解

近日更换服务器,要做数据库迁移,将数据库内的数据从服务器A迁移到服务器B.由于数据量较大,直接做dump耗时太长,故而采用如下方式处理:首先,在服务器B上安装了与服务器A同版本的MySQL,停止MySQL服务,将安装后的data目录删除: 然后,服务器A锁住全部表,从服务器A将整个data目录和数据文件直到拷贝到服务器B上,修改服务器B上MySQL的my.cnf文件中的datadir指向新的data目录. 最后,启动服务器B上的MySQL服务. 结果启动失败,报出 "无法启动MySQL服务&qu

CYQ.Data 轻量数据层之路 终极升级(二)

在上一篇:CYQ.Data 轻量数据层之路 开篇介绍(一)中,我们介绍了基本的类库与使用介绍.   上篇留言中虽然感觉好像很平静,不过不难想象,大伙仅勿勿一眼一扫而过的那种情景: 一个很沉重的心结,一直在很多开发人员的心里挥之不去:实体类. 大伙似乎都很排拆没有实体类的数据层框架,仅因早于习惯了ORM?   其实,我记得我第一次毕设的时候,也是有实体类的: 还记得很久前,毕设做的是仿QQ空间的CQ-Space空间,借用了CodeSmith生成实体类[里面集合了增删改查],来操作数据库, 也感受到

CYQ.Data 轻量数据层之路 抢先体验版本功能说明演示 (二十九)

本系列所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 本系列所有相关下载:CYQ.Data 轻量数据层之路 bug反馈.优化建议.最新框架下载 前言:   一直都是发布版本才写文章,这次为抢先体验版本[V2.5]做一下简单的功能介绍   以下进行功能更新说明[相比V2.0版本]: 1:修正DebugInfo属性在异常发生时无法取得操作语句的问题 2:MAction增加Bind方法可以轻松绑定DropDownList等控件 3:MDataTable增加ToList<T>泛型方