问题 如何将Vagrant框转换为Docker镜像


我看到可以将Docker镜像转换为Vagrant盒子。

有没有办法将Vagrant框转换为Docker镜像?


1370
2017-07-09 14:52


起源



答案:


我在我的Github项目中使用EC2盒和Virtualbox盒重播了这个 blacklabelops / CentOS的。我准备了一个必要的安装Vagrantfile,你可以自己尝试使用你的Vagrant盒子。

EC2盒子:

  • 使用创建和配置AMI图像 https://github.com/katzj/ami-creator  - 我的存储库中的Skripts。

  • 之后使用Guestfish将图像提取到tarball中。 - 我的存储库中的Skripts。

  • 在Docker中导入tarball。 - 我的存储库中的示例。

现在使用Vagrant Virtualbox,可以使用我提供的Vagrantfile重播命令。只需克隆存储库,将其旋转并输入:

$ qemu-img convert -f vmdk -O raw MyTry-disk1.vmdk mytry.img

Vagrant框的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

14
2017-07-09 23:07



谢谢,帮了我很多忙! - vmolchanov


答案:


我在我的Github项目中使用EC2盒和Virtualbox盒重播了这个 blacklabelops / CentOS的。我准备了一个必要的安装Vagrantfile,你可以自己尝试使用你的Vagrant盒子。

EC2盒子:

  • 使用创建和配置AMI图像 https://github.com/katzj/ami-creator  - 我的存储库中的Skripts。

  • 之后使用Guestfish将图像提取到tarball中。 - 我的存储库中的Skripts。

  • 在Docker中导入tarball。 - 我的存储库中的示例。

现在使用Vagrant Virtualbox,可以使用我提供的Vagrantfile重播命令。只需克隆存储库,将其旋转并输入:

$ qemu-img convert -f vmdk -O raw MyTry-disk1.vmdk mytry.img

Vagrant框的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

14
2017-07-09 23:07



谢谢,帮了我很多忙! - vmolchanov