Full VM images in Docker

Ahoy there,

I’d like to share a video I did recently on a new way to develop full VM images for use on the ThreeFold Grid, using Docker. First, here’s a quick rundown of why it’s cool and why this might interest you:

  • Full VMs provide full control over the Linux kernel used inside the VM. This is essential for certain use cases, but building custom full VM images was traditionally much more cumbersome
  • We can now use a single tool, Docker, for both micro and full VM development
  • Images prepared in this way are simply file system archives, rather than disk images, thus much simpler to manage (no need to worry about resizing, mounting, etc)

Overall, this method provides a simple way to create customized full VM images that can be much smaller than even the “minimal” official Ubuntu cloud images, for example. Without further adieu, here’s the video (some notes follow):


  • The Dockerfiles and scripts I use in the video are hosted on this repo.

  • ThreeFold’s VM abstraction is known as Zmachine. There is some documentation on Zmachine that includes instructions for building VM images, which I used as inspiration for my Docker based method