我一直在看Packer.io,并且很乐意使用它来提供/准备我们的开发人员使用的流浪者(VirtualBox)盒子.
我知道我可以使用VirtualBox Packer构建器使用VirtualBox构建盒子,但是找到Docker的层堆叠以提供更快的盒子开发过程.
如何使用Dockerfile生成图像,然后将其导出为Vagrant框?
从中找到docker图像的大小 docker images
REPOSITORY TAG IMAGE ID CREATED SIZE mybuntu 1.01 7c142857o35 2 weeks ago 1.94 GB
根据图像运行容器 docker run mybuntu:1.01
从容器创建QEMU图像,另外,在第一个命令(seek=IMAGE_SIZE
)中使用图像的大小.并且,为docker export
命令从中检索适当的容器IDdocker 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,它可以自动在vm上安装docker并构建一个Dockerfile
:
Vagrant.configure("2") do |config| config.vm.provision "docker" do |d| d.build_image "/vagrant/app" end end
构建映像后,可以使用该vagrant package
命令生成vagrant box .