Linux 容器与 Vagrant 之间的转换

Linux 容器与 Vagrant 之间的转换

情况如下:我们有一个 lxc(linux 容器),其中包含一个 Debian Squeeze 发行版,该发行版由预置文件构建而成。我们想添加一些额外的软件包(OMF 测试平台的软件包),这些软件包不属于主、贡献或非免费 debian 软件包列表。目标是(/曾经是)分发预置文件,以便其他用户可以在他们的 linux 容器中轻松使用 debian 发行版(带有新软件包)。但 LXC 似乎没有提供在安装中添加额外存储库的可能性(或者我们遗漏了某些东西),可以从中下载和安装其他软件包。

我们研究的解决方案是使用流浪汉与 Chef 结合,我们首先创建 Linux 容器,然后将该 Linux 容器转换为 vagrant box,让 vagrant 与 chef 结合添加我们自己的包(来自 omf 存储库),然后将其转换回 Linux 容器。这样,我们分发 Linux 容器预置文件、VagrantFile 以及可能的一些 shell 脚本来进行转换。

但是如何做到这一点呢?是否可以将 Linux 容器 (/var/lib/lxc/nameContainer/rootfs) 转换为 .box?或者是否可以将 .ext2/.ext4/.img(我们可以先将 Linux 容器转换为这些)转换为 .box?我们可以转换回去吗(从生成的 Vagrant VM 转换为 Linux 容器)?我们找不到有关此主题的任何信息(这显然不是一个好兆头……)

提前致谢,

格伦

答案1

没有自动化的方法,至少我找不到。

然而从存储角度来看,LXC 本质上是一个 chroot。

你可以:

  • 使用“chroot”( rootfs)
  • 如果需要,添加内核和 grub
  • 将其变成虚拟磁盘上的文件系统
  • 添加引导加载程序
  • 添加经典的启动时配置(/etc/fstab和 co)
  • 围绕此虚拟磁盘创建一个 VirtualBox VM
  • 将其转换为 Vagrant 框
  • 从 Vagrant 框创建一个 VM,并根据需要对其进行转换
  • 从虚拟机磁盘再次提取系统
  • 如果你想删除内核和 grub 内容,请在清理后将其放回你的 chroot

相关内容