volume 生命周期管理 - 天天5分钟玩转 Docker 容器技术(44)

Data Volume 中存放的是重要的应用数据,如何管理 volume 对应用相当重要。前面咱们主要关注的是 volume 的建立、共享和使用,本节将讨论如何备份、恢复、迁移和销毁 volume。docker

备份

由于 volume 其实是 host 文件系统中的目录和文件,因此 volume 的备份其实是对文件系统的备份。学习

还记得前面咱们是如何搭建本地 Registry 的吗?spa

95.png

全部的本地镜像都存在 host 的 /myregistry 目录中,咱们要作的就是按期备份这个目录。code

恢复

volume 的恢复也很简单,若是数据损坏了,直接用以前备份的数据拷贝到 /myregistry 就能够了。资源

迁移

若是咱们想使用更新版本的 Registry,这就涉及到数据迁移,方法是:test

  1. docker stop 当前 Registry 容器。容器

  2. 启动新版本容器并 mount 原有 volume。进阶

     

    docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:latest二维码

固然,在启用新容器前要确保新版本的默认数据路径是否发生变化。方法

销毁

能够删除再也不须要的 volume,但必定要确保知道本身正在作什么,volume 删除后数据是找不回来的。

docker 不会销毁 bind mount,删除数据的工做只能由 host 负责。对于 docker managed volume,在执行 docker rm 删除容器时能够带上 -v 参数,docker 会将容器使用到的 volume 一并删除,但前提是没有其余容器 mount 该 volume,目的是保护数据,很是合理。

若是删除容器时没有带 -v 呢?这样就会产生孤儿 volume,好在 docker 提供了 volume 子命令能够对 docker managed volume 进行维护。请看下面的例子:

容器 bbox 使用的 docker managed volume 能够经过 docker volume ls 查看到。

删除 bbox:

由于没有使用 -v,volume 遗留了下来。对于这样的孤儿 volume,能够用 docker volume rm 删除:

若是想批量删除孤儿 volume,能够执行:

 

docker volume rm $(docker volume ls -q)

小结

本章咱们学习了如下内容:

  1. docker 为容器提供了两种存储资源:数据层和 Data Volume。

  2. 数据层包括镜像层和容器层,由 storage driver 管理。

  3. Data Volume 有两种类型:bind mount 和 docker managed volume。

  4. bind mount 可实现容器与 host 之间,容器与容器之间共享数据。

  5. volume container 是一种具备更好移植性的容器间数据共享方案,特别是 data-packed volume container。

  6. 最后咱们学习了如何备份、恢复、迁移和销毁 Data Volume。

不知你们发现没有,这章咱们学习的只是单个 docker host 中的存储方案。而跨主机存储也是一个重要的主题,固然也更复杂,咱们会在容器进阶技术章节详细讨论。

下一节咱们便开始进阶知识部分的学习,首先讨论如何高效管理多个 Docker 主机。
 

二维码+指纹.png

相关文章
相关标签/搜索