我看到可以将Docker镜像转换为Vagrant框。
有没有办法将Vagrant框转换为Docker镜像?
答案 0 :(得分:17)
我在我的Github项目blacklabelops/centos中使用EC2框和Virtualbox框重播了这个。我准备了一个必要的安装Vagrantfile,你可以自己尝试使用你的Vagrant盒子。
EC2框:
使用https://github.com/katzj/ami-creator - 我的存储库中的Skripts创建和配置AMI图像。
然后使用Guestfish将图像提取到tarball中。 - 我的存储库中的Skripts。
在Docker中导入tarball。 - 我的存储库中的示例。
现在使用Vagrant Virtualbox,可以使用我提供的Vagrantfile重播命令。只需克隆存储库,将其旋转并输入:
$ qemu-img convert -f vmdk -O raw MyTry-disk1.vmdk mytry.img
Vagrant box的VMDK可以在Virtualbox文件夹中找到,通常是〜/ VirtualBox \ VMs /.
创建raw之后,您可以应用Guestfish。
$ guestfish -a mytry.img --ro
$ ><fs> run
注意:tty
$ ><fs> list-filesystems
/dev/sda1: ext4
/dev/VolGroup/lv_root: ext4
/dev/VolGroup/lv_swap: swap
$ ><fs> mount /dev/VolGroup/lv_root /
$ ><fs> tar-out / - | xz --best >> mytry.xz
$ ><fs> exit
注意:退出tty
导入docker:
$ cat mytry.xz | docker import - mytryimage
查看容器内部
$ docker run -it mytryimage bash
答案 1 :(得分:0)
我在Github项目blacklabelops / centos中使用EC2框和Virtualbox框重播了此内容。我已经准备了带有必要安装的Vagrantfile,您可以在Vagrant盒中尝试一下。
EC2框:
使用https://github.com/katzj/ami-creator-存储库中的Skripts创建和配置AMI映像。
然后使用Guestfish将图像提取到压缩包中。 -我的存储库中的Skripts。
将tarball导入Docker。 -我的存储库中的示例。