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

 阿凡达0205 发布于 2023-01-17 11:12

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

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

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

2 个回答
  • 从中找到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文件

    2023-01-17 11:13 回答
  • 如果你的目标是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 .

    2023-01-17 11:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有