如何将Docker映像转换为(vagrant)VirtualBox框?

我一直在看Packer.io,并愿意使用它来提供/准备我们的开发人员使用的vagrant(VirtualBox)盒子。

我知道我可以使用VirtualBox Packer构build器来构build带有VirtualBox的盒子,但是findDocker的层叠来提供更快的盒子开发过程。

如何用Dockerfile生成图像,然后将其导出为Vagrant框?

docker images查找泊坞窗图像的大小

 REPOSITORY TAG IMAGE ID CREATED SIZE mybuntu 1.01 7c142857o35 2 weeks ago 1.94 GB 

运行一个基于镜像docker run mybuntu:1.01的容器docker run mybuntu:1.01

从容器中创build一个QEMU图像,并在第一个命令( seek=IMAGE_SIZE )中使用图像的大小。 而且,对于docker export命令,从docker ps -a检索相应的容器标识

 dd if=/dev/zero of=mybuntu.img bs=1 count=0 seek=2G mkfs.ext2 -F mybuntu.img sudo mount -o loop mybuntu.img /mnt docker export <CONTAINER-ID> | sudo tar x -C /mnt sudo umount /mnt 

使用qemu-utils转换为vmdk

 sudo apt-get install qemu-utils qemu-img convert -f raw -O vmdk mybuntu.img mybuntu.vmdk 

有关可用于转换的格式的更多信息,请参阅此处 。 现在可以在virtualbox中导入vmdk文件

假设您的目标是VirtualBox,那么在整个过程中使用Vagrant可能会更好。

Vagrant附带一个docker provisioner ,可以自动将Dockerfile安装到vm上并构build一个Dockerfile

 Vagrant.configure("2") do |config| config.vm.provision "docker" do |d| d.build_image "/vagrant/app" end end 

一旦你的图像被build立,你可以使用vagrant package命令产生一个stream浪盒。

这是我要尝试的路线:

  • docker出口得到一个焦油球,
  • 然后使用qemu- *工具和步骤创build一个VMDK,如下所示: https : //superuser.com/a/482127/59809

这将允许我使用Docker设置/configuration机器,然后在通过vagrant控制的Virtualbox中运行它。