docker对数据卷容器进行备份和恢复

转自:http://www.cnblogs.com/zhuxiaojie/p/5947138.html

原文有一些问题,最好看我下面的文章 

 

官网的数据以及各大博客都没有对这个的具体说明,本人也是理解了好久。

我们使用docker的过程中,使用共享的数据卷是经常的,那么。我们要怎么进行备份呢?
 
##################################################################################################
备份:
 
首先,我们得了解下面4个命令
 
1:打包数据
 
tar -czvf /data/back.tar.gz /usr/

 

 
2:运行docker容器
 
docker run dbdata

 

 
3:挂载数据卷容器中的数据卷
 
docker run --volumes-from dbdata centos

 

挂载数据卷容器名为dbdata到新的容器中
 
4:挂载主机中现有的目录当作数据卷
 
docker run -v /webapps:/data centos

 

把主机中/data目录挂载到窗口中的/webapps目录下
 
 
了解上面的4条命令后,我们就可以备份数据了
 
docker run --privileged=true --volumes-from dbdata -v /sb1:/sb2 --name backup centos tar czvf /sb2/backup.tar.gz /dbdata

 

参数说明

  • --privileged=true 是为了避免访问目录权限不足的情况,这是由于selinux引起的。
  • --volumes-from dbdata 是挂载需要备份的数据卷容器名称,它就是一个容器。
  • -v /sb1:/sb2 这是挂载主机目录到窗口中,/sb1是代表着主机的目录,/sb2是代表着容器的目录。
  • centos 是代表着容器的REPOSITORY的ID,这个ID可以用docker images命令查看,可以选择你镜像里面小的进行操作,选择任何镜像都不影响备份。
  • tar czvf /sb2/backup.tar.gz /dbdata 这部分放在后面,代表着容器启动成功后的命令。这部分就是对数据卷进行压缩,/sb2/backup.tar.gz 这个目录是挂载的容器的目录,只要压缩到这个目录,那就相当于主机的目录也就有了相应的数据, /dbdata这个目录是挂载的数据卷容器中的目录每个人都可能不一样,我最喜欢用/data,综合起来就是一组压缩命令,正好实现了把数据卷中的数据备份到当前主机中。

 

 

#######################################################################################################

恢复:

 

 

数据卷容器备份数据后,备份数据查看 http://www.cnblogs.com/zhuxiaojie/p/5947138.html
 
我们可能要把这个备份的数据,还原到另一台的docker容器中,那么要怎么做呢?
首先我们要了解一些基础命令,请查看 http://www.cnblogs.com/zhuxiaojie/p/5947138.html
 
 
具体的还原命令如下,需要两个步骤
 
1:新建一个空的数据卷容器
 
 
docker run -v /dbdata2 --name dbdata2 centos /bin/bash

    centos 是代表着容器的REPOSITORY的ID,这个ID可以用docker images命令查看,可以选择你镜像里面小的进行操作,选择任何镜像都不影响还原。

这是一个空的数据卷容器
 
2:还原数据到数据卷容器中
 
docker run --privileged=true --volumes-from dbdata2 -v /sb1:/sb2 --name  recover centos tar -xzvf /sb2/backup.tar.gz -C /dbdata2

 

 
  • --privileged=true 是为了避免访问目录权限不足的情况,这是由于selinux引起的。
  • --volumes-from dbdata 是挂载需要备份的数据卷容器名称,dbdata2是容器名称。
  • -v /sb1:/sb2  这是挂载主机的目录到容器中,注意,这个参数很关键,/sb1是主机中需要挂载的路径,/sb2是容器的路径,容器中的路径,需要有着还原的文件。
  • centos 是代表着容器的REPOSITORY的ID,这个ID可以用docker images命令查看,可以选择你镜像里面小的进行操作,选择任何镜像都不影响还原。
  • tar -xzvf /sb2/backup.tar.gz -C /dbdata2 这是在容器启动后,执行在容器中的命令,解压/sb2/backup.tar.gz,这个目录是挂载主机中的目录,也就是还原文件中的文件,后面-C /dbdaga2 是解压到的目录,这个目录是挂载了数据卷容器中的目录,只要解压过去了,那就相当于把数据还原到了dbdata2中

分享到: 微信 更多