Docker容器技术 配置、部署与应用电子活页-03.07.通过卷容器实现卷的备份、恢复和迁移.docx
通过卷容器实现卷的备份、恢复和迁移
卷容器又称数据卷容器,是一种特殊的容器,专门用来将卷(也可以是绑定挂载)提供给其他容器挂载。使用dockerrun或dockercreate命令创建容器时可通过--volumes-from选项基于卷容器创建一个新的容器,并挂载卷容器提供的卷。下面给出一个备份、恢复卷的示例。
1.创建卷容器
(1)执行以下命令创建一个名为dbstore的卷容器,挂载一个匿名卷(/dbdata)。
[root@host1~]#dockercreate-v/dbdata--namedbstorebusybox/bin/sh
60a9bbd562a9d53b6e5c6263ca094c2931972f28c499832c81363f7100c94a5e
(2)使用dockerinspectdbstore命令查看容器详细信息,Mounts部分信息如下。
Mounts:[
{
Type:volume,
Name:b7bd4782109c7ce7b4035f5c67cbef2e8ee0c6e2012491c570f3f6a2b40953ff,
Source:/var/lib/docker/volumes/b7bd4782109c7ce7b4035f5c67cbef2e8ee0c6e2012491c570f3f6a2b40953ff/_data,
Destination:/dbdata,
Driver:local,
Mode:,
RW:true,
Propagation:
}
],
2.备份卷容器
执行以下命令完成以下3项任务。
[root@host1~]#dockerrun--rm--volumes-fromdbstore-v$(pwd):/backupubuntutarcvPf/backup/backup.tar/dbdata
/dbdata/
?启动一个新的容器并从dbstore容器中挂载卷。
?将本地主机的当前目录挂载为/backup。
?传送一个命令,将dbdata卷的内容打包为/backup/backup.tar文件。
命令完成后会自动停止容器,并且在主机当前目录中留下一个dbdata卷的备份文件backup.tar。
[root@host1~]#ls-lbackup.tar
-rw-r--r--1rootroot102401月1917:39backup.tar
3.从备份中恢复卷容器
创建备份之后,可以将它恢复到同一个容器,或者另一个在别处创建的容器。例如,创建一个名为dbstore2的新容器,如下所示。
[root@host1~]#dockerrun-v/dbdata--namedbstore2ubuntu/bin/bash
然后在新容器的数据卷中将备份文件解压缩,如下所示。
[root@host1~]#dockerrun--rm--volumes-fromdbstore2-v$(pwd):/backupubuntubash-ccd/dbdatatarxvPf/backup/backup.tar--strip1
启动的新容器的/backup目录挂载了主机当前目录,同时挂载了dbstore2数据卷容器。因为主机当前目录中有之前备份好的backup.tar文件,所以新创建容器的/backup目录中也有backup.tar文件,解压这个备份文件–C是指定解压位置的符号,解压到新容器的/目录下,所以新容器的/目录下就会得到/dbdata目录,又由于/dbdata是挂载dbstore卷容器的目录,所以会同步到dbstore容器,这样就将dbstore容器中//dbdata的数据恢复回来。