数据卷容器及数据迁移
数据卷是供一个或多个容器使用的特殊目录,该目录利用容器的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]#