我在 Windows 10 版本 1909(64 位)上使用 Canonical 的 Multipass 版本 1.4.0。
如果我启动一个 Ubuntu 实例并对其进行一些更改 - 例如,使用 apt-get 安装一些包。如何使更改持久化?也就是说,如何确保下次从此映像创建实例时,我不必再次安装该包?
答案1
使用 Multipass 创建的虚拟机 (VM) 实例的存储默认是持久的。如果您使用“multipass launch --name primary source_image”创建新实例,从 shell 进行修改,关闭,然后稍后使用“multipass start primary”或“multipass shell primary”重新启动它,那么您的更改仍将存在。如果您未指定,“primary”是实例的默认名称,因此可以从上述示例中省略。“multipass list”命令显示您创建的 VM 实例。
如果您想从同一个基础映像创建具有相同修改的多个实例,那么我相信您可以创建一个 cloud-init 自定义脚本以相同的方式修改每个实例。cloud-init customiztoin 方法可用于在首次运行时安装软件包、创建用户、设置批准的 SSH 密钥、注册本地生成的唯一密钥、挂载共享文件系统等。
从https://ubuntu.com/blog/using-cloud-init-with-multipass “云初始化是定制云实例的标准,现在 multipass 还可以利用 cloud-init 在启动期间定制实例。”
Multipass 术语有点令人困惑(至少一开始对我来说是这样),但希望这有助于澄清。要理解的关键是不要使用“multipass发射“命令将现有实例恢复到运行状态,因为启动命令仅在第一次创建新的 VM 实例时使用。 有关命令的更多详细信息,我发现最完整的文档是使用“multipass help”命令内置的,它显示的命令比在线多通道命令文档。
据我所知,使用 Multipass 的最大优势是可以在本地主机上快速创建新的空白或云初始化配置的 Ubuntu Server VM,然后在非常高的级别管理它们(启动、停止、删除、传输文件等)。我发现 Multipass 不太适合在主机/虚拟机管理程序之间移动 Ubuntu 服务器 VM 实例或复制已配置的 VM 实例(很难导出 VM 数据)。如果您只需要一个持久的 Ubuntu VM(并且可能备份或复制它),那么最好使用本机 VM 主机管理工具来管理该客户 VM,方法是创建一个空白客户机并在客户虚拟机上安装 Ubuntu Server从下载的 Ubuntu 服务器 Live ISO 文件。 祝你好运。