自己学Docker:7.数据卷容器的备份、恢复

最近由于工作的原因,各种事情,忙的要死.用户发现软件有问题,也不管是不是自己操作的问题,一口就咬定是软件的问题,询问什么问题时就”有问题”三个字回应也是醉了.
烦心事过去就不说,之前一直关于Docker看到了数据卷容器,就像知道数据卷容器有什么用处.查了不少资料,最基本的用处还是利用数据卷容器来备份、恢复、迁移数据卷.

备份

我们先创建一个data容器.

sudo docker run -i -t -v /data --name data c9fc7f8eec37

这里写图片描述
根据之前Docker的数据持久化之数据卷容器可知,上面创建的data数据卷容器挂载了data目录.
为了验证数据卷容器的备份功能,我在挂载的/data目录下创建一个data文件,并写入内容”data”.
这里写图片描述
然后为了利用数据卷容器备份,使用 –volumes-from 标记来创建一个加载 data 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。

sudo docker run -i -t --volumes-from data -v $(pwd):/backup c9fc7f8eec37 tar cvf /backup/backup.tar /data

上面的代码就完成了这一步,$(pwd)是docker支持的指定当前目录的方法,了解linux基本命令的会发现,linux查看当前目录就是pwd命令.
容器启动后,在当前目录下生成的backup.tar 文件就是data容器卷的备份文件.
这里写图片描述
这样,数据卷容器中的数据就备份完成.
简言之就是,先创建一个容器,并挂载要备份的data容器数据卷,再挂载数据卷 (pwd):/backup/bakcup/data/backup宿 $(pwd):/backup目录。

恢复

备份最终也是为了可以恢复,否则备份就没有意义了.Docker恢复备份也很简单,只需要2部即可.
首先,创建一个带有空数据卷的容器 data1。

sudo docker run -itd -v /data --name data1 c9fc7f8eec37

这里可以发现,run的参数使可以写在一起的.之前了解到参数i是打开容器中的stdin,t是为容器分配一个伪终端.这里的d是后台运行,并打印容器ID容器.
这里写图片描述
可以发现,名利执行后打印了容器的id,通过ps查看可知,容器一直在运行.
然后,创建另一个容器,挂载 data1容器卷中的数据卷,并使用 untar 解压备份文件到挂载的容器卷中。

sudo docker run --volumes-from data1 -v $(pwd):/backup c9fc7f8eec37 tar xvf /backup/backup.tar

这里写图片描述
这个时候,之前备份的数据卷容器的数据已经恢复到了容器data1中了.为了查看和验证恢复的数据,我们可以再启动一个容器挂载data1容器卷来查看.
简言之就是,如果要恢复数据到一个容器,首先创建一个带有数据卷的容器 data1,然后创建另一个容器,挂载 dbdata1 的容器,并使用 tar 解压备份文件到挂载的容器卷中。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页