设为首页 收藏本站
查看: 1246|回复: 0

[经验分享] docker数据管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-18 09:20:34 | 显示全部楼层 |阅读模式
                      Docker 数据管理


容器的空间,只是使用宿主机硬盘的一部分,一般很小。在容器中产生的数据,除非导出成镜像,否则停止或者删除容器,原来产生的数据也随之丢失。可以把宿主机的一个目录,挂载到容器中,产生的数据都写入这个目录,这样避免了数据的丢失。

1. 挂载本地的目录到容器里
docker run -tid -v /data/:/data wyp bash //-v 用来指定挂载目录,:前面的/data/为本地目录,:后面的/data/为容器里的目录,容器如果不存在/data目录,会自动创建。
然后在容器中df -h来验证,是否挂载成功。

2. 挂载数据卷
其实我们挂载目录的时候,可以指定容器name,如果不指定就随机定义了。比如上面我们没有指定,它就生成了一个名字为loving_kowalevski,这个名字可以使用命令 docker ps  看最右侧一列
docker run -itd --volumes-from loving_kowalevski centos bash
这样,我们使用centos镜像创建了新的容器,并且使用了 loving_kowalevski  容器的数据卷

说明:如果我们开启了10个容器,提供了web服务,且10个站点是负载均衡。宿主机的/data目录,都是挂载到容器的/data目录下,我们需要输入10次命令docker run -tid -v /data/:/data centos bash来实现,现在有了挂载数据卷功能,我们输入10次docker run -itd --volumes-from loving_kowalevski centos bash,其他9台会复制容器名字为loving_kowalevski的挂载内容,它改变挂载路径,其他9台也随之改变,且实了数据共享很方便。


3. 定义数据卷容器
有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。
首先建立数据卷容器,只是为了给其他容器共享数据用的目录。
docker run -itd -v /data/ --name testvol centos  bash  //注意这里的/data/是容器的/data目录,并非本地的/data/目录,里面是空的。容器名称可以自定义。然后进入该容器
docker exec -it testvol bash   #既可以写ID,也可以写名称。进入后可以看到data目录是空的。exit退出,然后让其他容器挂载该数据卷
docker run -itd --volumes-from testvol centos bash
然后进入第二个容器,可以df -h看到也有一个/data目录,也是空的,写入数据,容器1也同步了数据。
docker run -itd  --volumes-from testvol --name=web2 centos bash 在开启一个容器,名称为web2
然后进入第三台名为web2的容器,一样可以看到/data目录的数据共享。
对于第一台容器,他的/data是总的共享目录,所以一定要保护好,不要随便停止,删除。


Docker 数据卷的备份与恢复
备份
mkdir /vol_data_backup
docker run --volumes-from testvol -v /vol_data_backup/:/backup/centos tar cvf /backup/data.tar /data/
进入新的容器,然后打包容器1的共享目录到backup下。
说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地的/vol_data_backup/目录挂载到该容器的/backup下,这样在容器中/backup目录里面新建的文件,我们就可以直接在/vol_data_backup/目录中看到了。 然后再把/data/目录下面的文件打包到成data.tar文件放到/backup目录下面。

恢复
思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。
新建数据卷容器1:
docker run -itd -v /data/ --name testvol2 centos bash
挂载数据卷新建容器,并解包:
docker run --volumes-from testvol2 -v /vol_data_backup/:/backup centos tar xvf /backup/data.tar
解压后,文件为/data目录和文件,所以我们需要在/下解压,文件自动覆盖到/data目录下。

说明:tar xvf /backup/data.tar是一条命令,可以直接跟在docker run ...后面,执行后退出。如同我们之前执行的 /bin/bash一样的道理。

                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-205410-1-1.html 上篇帖子: docker仓库管理 下篇帖子: docker网络-如何让外部网络访问容器资源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表