【Docker 那些事儿】容器数据卷的妙手_docker volumes无备份的数据卷怎么恢复(1)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

以上示例为了模拟数据丢失,将容器中文件 /var/volume1/a.txtvar/volume2/b.txt 删除。

下面进行数据恢复,示例代码如下👇
在这里插入图片描述
以上示例通过创建新容器对数据卷容器进行挂载,并将宿主机数据目录挂载到容器,再将解压后的数据存放到指定路径下。

下面进入容器查看数据是否成功恢复,示例代码如下👇
在这里插入图片描述
从以上示例中可以看到,数据文件 a.txtb.txt 都已经成功恢复。

🍑 迁移数据卷

迁移数据卷是将备份数据恢复到新建容器中。

新建容器并解压备份文件到新的容器数据卷,示例代码如下:
在这里插入图片描述
以上示例新建了容器 new-container,并挂载了数据卷目录 volume1volume2,但数据卷中并没有数据。

下面使用 Ctrl+P+Q 组合键退出当前容器终端,将备份数据迁移到容器 new-container 中,示例代码如下:
在这里插入图片描述
从以上示例中可以看到,数据已经迁移成功。

建议新容器创建时挂载的数据卷路径与先前备份的数据卷路径保持一致,否则会出现数据恢复不全的情况,示例代码如下:
在这里插入图片描述
以上示例中,路径没有保持一致,备份之后发现只恢复了 volume1 中的数据,volume2 中的数据没有恢复。

为了避免这种情况的发生,可以修改 -C 参数后面的路径,使数据正常恢复,示例代码如下:
在这里插入图片描述
以上示例通过修改路径,使数据完整的备份到容器 new-container 中。

2. 管理数据卷

🍑 与容器关联

数据卷最大的优势是 可以用来做持久化数据,它的生命周期是独立的

Docker 不会在容器被删除后自动删除数据卷,也不存在类似垃圾回收的机制来处理没有被任何容器使用的数据卷。

但难免会有无用的数据卷,用户可以通过在删除容器的命令中添加参数,在删除容器的同时删除数据卷。

Docker数据卷可以通过命令与容器关联,删除容器时,数据卷也随之删除。

  • docker rm -v

删除容器时添加-v参数会将数据卷一并删除。

  • docker run --rm

创建、运行容器时添加 --rm 参数,容器运行结束时容器与数据卷会被一并删除。
 
如果不对数据卷进行及时清理,/var/lib/Docker/volumes/ 目录下就会产生许多残留目录。
 
但删除的数据卷是无法找回的,建议再三确认之后在执行操作。

下面创建一个容器并挂载数据卷,再将容器删除查看数据,示例代码如下:
在这里插入图片描述
以上示例中,将挂载了数据卷的容器删除之后,容器挂载的数据卷还存在。

下面在删除容器的同时添加 -v 参数,删除该容器的数据卷,示例代码如下:
在这里插入图片描述
以上示例在删除容器时添加了 -v 参数,数据卷也同时被删除,清理了无用的数据卷,节省了磁盘空间。

创建容器时,在命令中添加 --rm 参数,终止容器时会自动删除容器及数据卷,示例代码如下:
在这里插入图片描述
以上示例在创建容器命令中添加了 --rm 参数,并执行了该命令。

下面通过另一个终端查看宿主机的挂载目录,示例代码如下:
在这里插入图片描述
上述示例中,容器创建成功,数据卷目录也挂载成功。

下面通过 exit 命令退出终端,并再次查看宿主的挂载目录,示例代码如下:
在这里插入图片描述
以上示例中,使用 exit 命令退出容器之后,数据卷也被删除。

🍑 命令管理

Docker 中有专门的容器数据卷命令供用户来管理容器数据卷。下面通过示例介绍容器数据卷命令的一些参数。

  • create

创建数据卷。

示例代码如下:
在这里插入图片描述
以上示例中通过在 docker volume 命令中添加 create 参数,创建出了命名为 test 的新容器数据卷。

  • ls

列出数据卷。

示例代码如下:
在这里插入图片描述
以上示例通过 docker volume 命令添加 ls 参数查看数据卷,可以看到刚刚创建的test数据卷。

另外,在宿主机的挂载目录中也可以查看数据卷信息,示例代码如下:
在这里插入图片描述
上述示例通过宿主机挂载目录查看容器数据卷,与数据卷目录下查看到的结果相同。

  • inspect

显示一个或多个数据卷的详细信息。

首先创建一个容器,并为其挂载刚刚创建的容器数据卷,示例代码如下:
在这里插入图片描述
以上示例将刚刚创建的容器数据卷 test 作为新容器 test-container 的数据卷,

也就是将 test 数据卷在宿主机上的目录 /var/lib/Docker/volumes/test/_data 挂载到容器内的 /volume 中。

接着,通过命令查看容器 test-container 的数据卷信息,示例代码如下:
在这里插入图片描述
上述示例通过查看容器挂载信息得知容器 test-container 成功挂载 test 数据卷。

另外,还可以在宿主机中使用 docker inspect 命令查看指定数据卷的信息,示例代码如下:
在这里插入图片描述

  • rm

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值