I saw that it's possible to convert a Docker image into a Vagrant box.
Is there a way to convert a Vagrant box into a Docker image?
One big difference between Docker and Vagrant is that Docker containers run on Linux, but Vagrant files can contain any operating system. That said, Docker does work with non-Linux operating systems. It just needs to run within a Linux virtual machine.
Vagrant comes with support out of the box for using Docker as a provider. This allows for your development environments to be backed by Docker containers rather than virtual machines. Additionally, it provides for a good workflow for developing Dockerfiles.
I replayed this with EC2 boxes and Virtualbox boxes in my Github project blacklabelops/centos. I have prepared a Vagrantfile with the necessary installation and you can try it yourself with your Vagrant boxes.
EC2 boxes:
Create and provision an AMI image with https://github.com/katzj/ami-creator - Skripts in my repository.
Afterwards use Guestfish in order to extract the image into a tarball. - Skripts in my repository.
Import the tarball inside Docker. - Example in my repository.
And now with Vagrant Virtualbox, commands can be replayed with my provided Vagrantfile. Just clone the repository, spin it up and type:
$ 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/.
After the raw has been created you can apply 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
Importing into docker:
$ cat mytry.xz | docker import - mytryimage
Look inside the container
$ docker run -it mytryimage bash
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With