如何将 Vagrant box 转换为 Docker 镜像

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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 权限。

以上是关于如何将 Vagrant box 转换为 Docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章

如何将显示从 vagrant Linux box 导出到 MacOS 主机?

如何将所有 *.dev 路由到 vagrant box 上的子文件夹

如何从Vagrant box运行ganache-cli?

如何从 Vagrant box 运行 ganache-cli?

vagrant box php centos 选 哪个

如何制作一个vagrant的base box 及安装 additions