如何将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中运行它。