Linux 配置和应用程序部署在新硬件上

Linux 配置和应用程序部署在新硬件上

这个想法是拥有一个 docker 映像或类似的东西,我在其中配置一大堆与硬件无关的东西,然后将其部署到实际设备,例如树莓派或普通 x64 服务器。

我假设这是不可能做到的很简单,因为 docker 有一些虚拟化硬件会与目标不匹配?我不想在新安装的 Linux 上的容器中运行 docker-image,我需要一切才能本地运行。

有人可以指出我正确的方向如何实现这一点,什么样的开发运营软件我应该在开始时考虑一下。除了制作一些install-scripts并复制configs(这基本上是真的)。

我想要得到的是有一个restore-image,我最好在虚拟机中配置,然后有一个起点,我将其安装image在(几乎)任何硬件上,它将启动...

或者我对 linux 如何处理不断变化的硬件有误解? (我对更换 GPU 的经历很糟糕)

(环顾四周似乎泊坞窗是最好的也是最多的明智的对此的解决方案,使用docker export,但我很好奇是否有更简单的解决方案,也许是一个可以导出我指定的特定应用程序/配置的程序,而不是手动编写脚本,不是因为懒惰,而是因为人为错误)

答案1

我假设您正在寻找一种将已安装系统的映像(包含应用程序、配置等)“克隆”到另一台计算机(实际的裸机硬件,而不是虚拟机)的方法。

因此,您还应该从真实硬件作为源开始,而不是虚拟机或 Docker 容器。在该计算机上安装您需要的所有内容,但尽量避免安装特定于设备的第三方驱动程序。如果您能够坚持使用内核自动提供的驱动程序,那么您的映像很有可能在另一台计算机上运行。当然需要是相同的架构,所以如果你想为x86构建镜像,你需要x86机器,如果你想为Pi构建镜像,你需要Pi。

然后你可以使用克隆属制作磁盘映像,然后在另一台计算机上恢复该映像。但是,Clonezilla 仅适用于 x86 机器,不适用于 Pi。

另一种方法是将dd整个磁盘(作为原始设备)复制到外部驱动器/USB 记忆棒上的文件,然后在另一台计算机上恢复该映像文件(再次写入原始磁盘设备),但有一个限制,即您需要具有相同的映像文件。两台机器中的磁盘大小 - 否则我不希望克隆的系统根本无法启动。当然,您需要在机器(源或目标)从实时介质启动后执行此操作,以便磁盘上的操作系统不处于活动状态(如果目标机器根本不存在,因此启动的唯一方法来自实时媒体)。

大多数“硬核”方法需要相当多的工作(但您可以使用此方法将系统克隆到具有更大磁盘的计算机)是tar磁盘上的整个文件系统(也在从实时介质启动之后)并将它们解压到目标计算机上的适当分区(当然,在手动创建分区之后)。之后,您需要调整/etc/fstab文件(因为分区 UUID 通常会不同)并在目标计算机上安装引导加载程序。当我们用更强大的硬件替换服务器时,我已经使用这种方法多次“克隆”工作系统。

警告:如果计算机具有静态配置的 IP 地址,则“克隆”目标计算机将具有相同的地址 - 您必须手动更改它们。对于某些系统,您还必须从中删除一些文件/etc/udev/rules.d(名称中带有“持久”的文件)以使 udev “忘记”旧机器中的设备并在下次启动时再次检测到它们 - 否则,您可以存在问题,例如网络接口不存在(如例子)

相关内容