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

时间:2014-05-02 20:42:03

标签: virtualbox vagrant docker packer

我一直在关注Packer.io,并且很乐意使用它来配置/准备我们开发人员使用的流浪者(VirtualBox)盒子。

我知道我可以使用VirtualBox Packer构建器使用VirtualBox构建盒子,但是找到Docker的层堆叠以提供更快的盒子开发过程。

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

3 个答案:

答案 0 :(得分:7)

如果您的目标是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命令生成一个流浪盒。

答案 1 :(得分:6)

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命令,从docker ps -a

中检索相应的容器ID
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

可以找到有关可用于转换的格式的更多信息here。 现在,您可以在virtualbox中导入vmdk文件

答案 2 :(得分:1)

这是我要尝试的路线:

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