最初的问题如何将当前安装的 Ubuntu 迁移到虚拟机?很有见地,但随着 Vagrant 或 Docker 等系统的改进和发展,Clonezilla 可能在复制开发环境方面已经过时了。我认为值得重新审视。
我对 Vagrant 和 Docker 在这方面的印象:
- 流浪汉。非常适合创建虚拟机来运行您的代码。但是,如果您有一台具有大量配置等的现有 Ubuntu 机器……似乎没有办法将该机器的设置导出到 vagrantfile?
- Docker. 似乎适合跑步你的应用程序可以在任何安装了docker的地方运行,但不能发展您的应用程序可以随处运行。我可能错了,这就是我问的原因。如果您的主要开发机器坏了,那么拥有一个 Docker 容器是否足以在开发环境中快速恢复运行?
问题:Vagrant 或 Docker 能否取代 Clonezilla 将开发机克隆到虚拟机上?如果可以,您会选择哪一个?能否给出一些关于此案例实施的要点?
答案1
当然,但是他们对大致相同的事情采取不同的方法。
- Clonezilla(等)涉及获取完整的引导加载程序到应用程序的映像。它很大,而且没有重复数据删除功能。如果您有 50 个类似堆栈的实例,请对每个实例进行完整备份并存储 50 个完整映像。您存储了大量易于替换的内容。
- Docker 安装在 Ubuntu 上(可通过 CD 安装)。每个容器都可以基于公共映像。覆盖你的不可替代的数据。这就是你需要进行备份。在前面的场景中,这意味着现在有 50 个 Ubuntu 基本副本不需要备份。
要恢复第一个,您只需获取映像并刻录它。要恢复整个 Docker 堆栈,您需要重新安装 Ubuntu、Docker,获取 [tiny] Ubuntu 基础映像,然后重新安装您的层和配置。您可以 — 也应该 — 自动化构建过程(Chef、Puppet 等)。
长期影响很简单:磁盘空间。您可以在与 Clonezilla 镜像相同的空间中备份 Docker 应用程序十亿次……但代价是复杂性。
侧边栏:当我提到自动化时,还有第三种思路,即仅使用 Chef/Puppet 来自动化 Ubuntu 安装和配置。最终您将获得完整安装,因此 Docker 无法为您提供任何运行时内存/存储优势,但可以进行小型备份和轻松复制。
容器是个好主意。容器和层可能是一个更好的主意。我还没有愤怒地实现它们,但我才刚刚开始看到 LXC 的好处,所以我确信这不会持续太久。
在你的情况下,不要忘记您可以使用这两种备份技术如果您不确定,请立即下载。也就是说,您可以获取 Docker 主机的 Clonezilla 映像(同时仍在其他地方保留您的私有 Docker 映像的备份)