学习笔记六:Docker容器的数据管理

Docker容器的数据卷

什么是数据卷?

数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理,同一个数据卷可以只支持多个容器的访问。

数据卷的特点:

  • 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会被拷贝到新初始化的数据卷中
  • 数据卷可以在容器之间共享和重用
  • 可以对数据卷里的内容直接进行修改
  • 数据卷的变化不会影像镜像的更新
  • 卷会一直存在,即使挂载数据卷的容器已经被删除

数据卷的使用:

为容器添加数据卷
docker run -v /datavolume:/data -it centos /bin/bash
docker run --name nginx1 -v ~/datavolume:/data -itd centos  /bin/bash

新建容器nginx1
~/datavolume为宿主机目录(执行该命令会在宿主机生成该文件夹),/data为docker启动的volume容器的里的目录
这样在宿主机的/datavolume目录下创建的数据就会同步到容器的/data目录下

为数据卷添加访问权限

添加只读权限之后在docker容器的/data目录下就不能在创建文件了,为只读权限;在宿主机下的/datavolume1下可以创建东西

docker run --name volume1 -v ~/datavolume1:/data:ro -itd centos  /bin/bash
使用dockerfile构建包含数据卷的镜像
cat >dockerfile<<EOF
FROM centos
VOLUME ["/datavolume3","/datavolume6"]
CMD /bin/bash
EOF
docker build -t="volume" .         #构建镜像
docker run --name volume-dubble -it volume   #生成容器

会看到这个容器下有两个目录,/datavolume3和/datavolume6

在这里插入图片描述

Docker的数据卷容器

什么是数据卷容器: 命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器
挂载数据卷容器的方法

docker run --volumes-from [container name]
docker run --name data-volume -itd volume #(volume这个镜像是上面dockerfile创建的带两个数据卷/datavolume3和/datavolume6的镜像)
docker exec -it data-volume /bin/bash    #(进入到容器中)
touch /datavolume6/lucky.txt           #在datavolume6卷下创建lucky.txt文件
exit

创建一个新容器挂载刚才data-volume这个容器创建的数据卷

docker run --name data-volume2 --volumes-from  data-volume -itd centos /bin/bash
docker exec -it data-volume2 /bin/bash
cd /datavolume6

可以看见刚才在上一个容器创建的文件lucky.txt

在这里插入图片描述

docker数据卷的备份和还原

数据备份方法:

docker run  --volumes-from [container name] -v $(pwd):/backup centos tar czvf /backup/backup.tar [container data volume]

备份容器data-volume2的/datavolume6卷下的文件,存放在宿主机的/root/backup下叫做data-volume2.tar.gz

docker run --volumes-from data-volume2  -v  /root/backup:/backup --name datavolume-copy centos tar zcvf /backup/data-volume2.tar.gz /datavolume6

数据还原方法:

docker run --volumes-from [container name] -v $(pwd):/backup centos tar xzvf /backup/backup.tar.gz [container data volume]

进入容器data-volume2的/datavolume6卷,删除文件lucky.txt并退出。
执行恢复,在进入容器data-volume2的/datavolume6卷查看lucky.txt文件是否还在

docker exec -it data-volume2 /bin/bash   #容器data-volume2是上面创建的
cd /datavolume6
ls
rm -rf lucky.txt
exit 
docker run --volumes-from data-volume2 -v /root/backup/:/backup centos tar zxvf /backup/data-volume2.tar.gz -C /datavolume6
docker exec -it data-volume2 /bin/bash
cd /datavolume6 # 可以看到还原后的数据

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值