docker 数据备份和恢复

如果docker容器和宿主机之间已经有目录的映射关系的话,直接将容器中需要备份的内容直接存储到映射的目录下即可。

但我们也提供一种没有作映射情况下数据备份和恢复的方法。

这是备份和恢复的原理图,下面我们看看具体的实现步骤。

数据备份

启动一台数据卷容器

$ docker run -it -v /data --name testvol centos bash
b7dd298e27bfceaecf1242ecfe3b6fb8bc8ade37c912f963980c7bad511d849f

在容器目录中写入数据

[root@b7dd298e27bf /]# echo "123" > /data/123     
[root@b7dd298e27bf /]#

创建宿主机备份数据存放目录

$ mkdir /data/backup

新建备份容器

docker run --volumes-from testvol -v /data/backup/:/backup centos tar cvf /backup/data.tar /data/

说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地的/data/backup/目录挂载到该容器的/backup下,这样在容器中/backup目录里面新建的文件,我们就可以直接在/data/backup/目录中看到了。 然后再把/data/目录下面的文件打包到成data.tar文件放到/backup目录下面。

恢复

思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包

新建数据卷容器

docker run -itd -v /data/ --name testvol2 centos bash

挂载数据卷新建容器,并解包

docker run --volumes-from testvol2  -v /data/backup/:/backup centos tar xf /backup/data.tar

注:如果容器和宿主机之间有映射关系直接复制就可以了,不需要这么麻烦!!

最后更新于

这有帮助吗?