如何将 Vagrant 框转换为 Docker 图像

How to convert a Vagrant box to a Docker image

我看到可以将 Docker 图像转换成 Vagrant 盒子。

有没有办法将 Vagrant 盒子转换成 Docker 图像?

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

EC2 盒子:

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

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

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

现在使用 Vagrant Virtualbox,可以使用我提供的 Vagrantfile 重播命令。只需克隆存储库,旋转它并键入:

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

The Vagrant box's VMDK can be found in the Virtualbox folder, usually ~/VirtualBox\ VMs/.

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

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

Note: 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

Note: exiting tty

正在导入 docker:

$ cat mytry.xz | docker import - mytryimage

查看容器内部

$ docker run -it mytryimage bash