所有的 docker 卷都可以放入一个分区吗?这样是否适合备份 - 克隆目的?(例如:/dev/sdb1 @fstab 中的 /var/lib/docker/volumes/)

所有的 docker 卷都可以放入一个分区吗?这样是否适合备份 - 克隆目的?(例如:/dev/sdb1 @fstab 中的 /var/lib/docker/volumes/)

我正在考虑将我们所有的文档和电子表格基础设施从旧的独立 samba 服务器迁移到那些流行的自托管解决方案之一,并尝试进行最佳的长期易出错的轻松(重新)安装。我已根据示例使用自己的 docker-compose 文件轻松完成第一次安装。

它具有多个容器,包括数据库、Web 服务器、证书生成器和验证器。

对于我这样的 Docker 新手来说,备份看起来非常复杂,特别是有些网站说我甚至不应该触碰 /var/lib/docker/volumes/,而且我担心包管理器或 docker install/updates 可能会破坏它。

对我来说,更快捷、更简单的方法很简单:

  • systemctl 停止 docker

  • docker save(s);docker export(s) 容器到 tars

  • clonezilla /dev/sdb1 到相同大小的映像或磁盘(如果 /var/lib/docker/volumes/ 安装在 /dev/sdb1 中)

并在需要时进入未来机器的新服务器:

  • 恢复 clonezilla 映像/设备并将其挂载到 /var/lib/docker/volumes
  • 安装并启动docker
  • docker 加载;docker 导入 tars

我担心数据库容器可能无法连接到它的卷,并且我会丢失登录和版本控制,但丢失文件似乎更困难。

据我所知,逐个扇区复制分区只需几分钟,而数百万个文件的 cp -R 则需要几个小时,这些步骤让我感到更安全,可以重新运行 docker-compose 来更新数据库和 Web 引擎,因为面对 Web 需要它的安全和修补

您认为更安全的做法是 - 快固然好,但实际上不是必要的 - 或者我已经足够安全了吗?

谢谢你!

答案1

使用卷挂载是强制性的吗?如果不是,您应该检查绑定挂载。只需从服务器 A 获取文件系统,将其复制到服务器 B 并将其挂载为绑定挂载即可。

积极的一面是,迁移工作量很小,您可以将其存储在服务器上的任何位置。无需将其存储在 /var/lib/docker/volumes 中。消极的一面是,您需要注意用户和组 ID 以及权限。根据您的设置,这可能需要更多努力。

相关内容