数据卷是供一个或多个容器使用的特殊目录,该目录利用容器的ufs文件系统为容器提供一些稳定的特性或数据共
类似于linux系统下的mount(挂载命令)
数据卷的特点
数据卷可以在容器之间共享和重用对数据卷的修改立马会生效对数据卷的更新不会影响镜像卷会一值存在,直到没有容器使用
实例--创建数据卷
# -v 创建数据卷
[root@docker ~]# docker run -ti -v /test centos:latest /bin/bash
[root@b67fa87fa0ef /]# cd /
[root@b67fa87fa0ef /]# ls
anaconda-post.log dev home lib64 mnt proc run srv test usr
bin etc lib media opt root sbin sys tmp var
# 将本地的目录挂载到容器中(此处写绝对路径)
[root@docker ~]# docker run -it --name gz -v /root/s_test:/root/d_test centos:latest /bin/bash
数据卷容器----专门提供数据卷的容器
[root@docker ~]# docker run -it -v /datastorage --name datac1 centos:latest
[root@2472d6fd6c0e /]# ls
anaconda-post.log datastorage etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@2472d6fd6c0e /]#
挂载数据卷容器中的数据卷
[root@docker ~]# docker run -it --volumes-from datac1 --name testdata centos:latest
[root@a8aeac7f6f1a /]# ls
anaconda-post.log bin datastorage dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@a8aeac7f6f1a /]#
原理:
将数据卷容器相应数据卷进行备份,然后将备份文件保存起来,
在有需要的时候再将备份文件恢复为原来的数据卷,数据卷里面的内容要完整保存
1.创建一个新容器挂载数据卷容器的数据卷并压缩数据卷
[root@docker ~]# docker run -it --volumes-from datac1 --name bk -v ${PWD}:/backup centos:latest tar cvf /backup/test.tar /datastorage
tar: Removing leading `/' from member names
/datastorage/
/datastorage/a.txt
[root@docker ~]# ls
abc.txt busybox.gz docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm s_test
build docker-engine-1.12.1-1.el7.centos.x86_64.rpm docker_images.zip test.tar
[root@docker ~]# tar tf test.tar
datastorage/
datastorage/a.txt
2.恢复
[root@docker ~]# docker run -it -v ${PWD}:/hf --name hf centos:latest
[root@0f445001413a /]# ls
anaconda-post.log bin dev etc hf home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@0f445001413a /]# cd hf
[root@0f445001413a hf]# ls
abc.txt busybox.gz docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm s_test
build docker-engine-1.12.1-1.el7.centos.x86_64.rpm docker_images.zip test.tar
[root@0f445001413a hf]# tar -xf test.tar
[root@0f445001413a hf]# ls
abc.txt busybox.gz docker-engine-1.12.1-1.el7.centos.x86_64.rpm docker_images.zip test.tar
build datastorage docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm s_test
[root@0f445001413a hf]#