情况如下:我们有一个 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