数据卷容器及数据迁移

  数据卷是供一个或多个容器使用的特殊目录,该目录利用容器的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]# 
原文地址:https://www.cnblogs.com/ray-mmss/p/10617896.html