7、Docker容器的数据管理

一、Docker容器的数据卷
docker的理念之一是将应用与其运行的环境进行打包,因此通常docker容器的生存周期与在容器中运行的程序的
生存周期是一致的,但对于数据的要求是持久化的。另外,docker容器之间也需要一个共享数据的渠道,故有了数据卷。
1、什么是数据卷
a)数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。
b)数据卷的设计的目的,在于数据的永久化,它完全独立与容器的生命周期,因此,docker不会在容器删除
时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理。

数据卷:a)它是独立存在于docker宿主机中,与docker容器的生命周期是分离的;b)docker数据卷本
质上是存在于docker宿主机中的文件系统;c)docker数据卷可以是文件也可以是目录;d)docker容器可以利用
数据卷与宿主机进行数据共享;e)同一个目录或文件可以支持多个容器的访问。
数据卷的特点:a)数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷
贝到新初始化的数据卷中。b)数据卷可以在容器之间共享和重用。c)可以对数据卷里的内容直接进行修改。
d)数据卷的变化不会影响镜像的更新。e)卷会一直存在,即使挂载数据卷的容器已经被删除

~/container_data指定宿主机中的目录:data指定容器中的目录
在容器中往data目录下添加文件,也是在宿主机中的container_data目录下添加文件。

使用docker inspect 查看刚创建的容器,可以查看容器是否挂载了数据卷

docker run -it -v ~/datavolume:/data:ro --name=dvt2 ubuntu /bin/bash :ro设置容器对数据卷只有只读权限

2、数据卷的使用
使用dockerfile构建包含数据卷的镜像
dockerfile指令: volume ["/data"]
dockerfile中创建的数据卷是不能映射到系统中已存在的文件目录的。

#For Data Volume Test
FROM ubuntu:14.04
VOLUME ["/datavolume1","/datavolume2"]
CMD /bin/bash
如上创建的镜像创建了两个数据卷 docker build -t myrep01/dvt3 .
依据创建的镜像启动容器 docker run --name=dvt4 -it myrep01/dvt3
在容器中查看文件有datavolume1,datavolume2两个文件夹
退出容器,使用docker inspcet dvt4查看容器信息,可以看到数据卷在宿主机的位置




二、Docker的数据卷容器
1、什么是数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器称为数据卷容器

2、数据卷容器的使用
docker run --volumns-from [container name] 由创建容器时通过--volumns-from 指定

docker run -it --name dvt6 --volumes-from dvt5 ubuntu /bin/bash
docker run -it --name dvt7 --volumes-from dvt5 ubuntu /bin/bash
dvt5是挂载了数据卷的数据卷容器
dvt6和dvt7也会挂载dvt5中挂载的数据卷,docker rm dvt5,将dvt5删除,并不影响dvt6和dvt7的数据卷加载

docker run -it --name dvt8 --volumes-from dvt7 ubuntu /bin/bash
docker rm -v dvt7
使用docker rm -v 表示将容器挂载的数据卷也同时删除,
docker start dvt8
docker attach dvt8
进入dvt8容器中,依然可以使用挂载的数据卷,这是因为,在docker中如果一个数据卷还在被容器使用,那么它就会一直
存在。

三、Docker数据卷的备份和还原
1、数据备份方法
a)docker run --volumes-from [container name] -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar [container data volume]

执行以上命令后的结果:执行备份命令容器既挂载了一个需要备份的数据卷,同时也挂载了一个存放备份数据的数据卷;

docker run --volume-from dvt5 -v ~/backup:/backup --name dvt10 ubuntu tar cvf /backup/dvt5.tar /datavolume1
--volume-from dvt5指定要备份数据卷容器
-v ~/backup -v 指定宿主机中备份文件存放路径
:/backup 指定容器中备份文件存放路径
tar cvf /backup/dvt5.tar 执行备份命令,压缩文件
/datavolume1 需要备份的数据卷


2、数据还原方法
docker run --volumes-from [container name] -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar [container data volume]
与数据卷的备份是一样的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值