【问题标题】:How to convert a Vagrant box to a Docker image如何将 Vagrant box 转换为 Docker 镜像
【发布时间】:2015-09-28 00:58:15
【问题描述】:

我看到可以将 Docker 映像转换为 Vagrant 盒子。

有没有办法将 Vagrant box 转换为 Docker 镜像?

【问题讨论】:

    标签: image docker vagrant provisioning


    【解决方案1】:

    我在我的 Github 项目blacklabelops/centos 中使用 EC2 盒子和 Virtualbox 盒子重放了这个。我已经准备了一个带有必要安装的 Vagrantfile,你可以用你的 Vagrant 盒子自己尝试一下。

    EC2 盒子:

    • 使用 https://github.com/katzj/ami-creator 创建和配置 AMI 映像 - 我的存储库中的脚本。

    • 然后使用 Guestfish 将图像提取到压缩包中。 - 我的存储库中的脚本。

    • 在 Docker 中导入压缩包。 - 我的存储库中的示例。

    现在有了 Vagrant Virtualbox,可以使用我提供的 Vagrantfile 重播命令。只需克隆存储库,启动它并输入:

    $ qemu-img convert -f vmdk -O raw MyTry-disk1.vmdk mytry.img
    

    Vagrant box 的 VMDK 可以在 Virtualbox 文件夹中找到,通常是 ~/VirtualBox\VMs/。

    创建原始文件后,您可以应用 Guestfish。

    $ guestfish -a mytry.img --ro
    $ ><fs> run
    

    注意:tty

    $ ><fs> list-filesystems 
    /dev/sda1: ext4
    /dev/VolGroup/lv_root: ext4
    /dev/VolGroup/lv_swap: swap
    $ ><fs> mount /dev/VolGroup/lv_root /
    $ ><fs> tar-out / - | xz --best >>  mytry.xz
    $ ><fs> exit
    

    注意:退出 tty

    导入docker:

    $ cat mytry.xz | docker import - mytryimage
    

    查看容器内部

    $ docker run -it mytryimage bash
    

    【讨论】:

    • 谢谢,帮了我很多忙!
    • 太棒了!谢谢!问候慕尼黑。注意:guestfish 需要 root 权限。
    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2020-03-26
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多