slim will build a micro-vm from a Dockerfile. Slim works by building and extracting a rootfs from a Dockerfile, and then merging that filesystem with a small minimal kernel that runs in RAM.
This results in a real VM that can boot instantly, while using very limited resources. If done properly, slim can allow you to design and build immutable unikernels for running services, or build tiny and embedded development environments.
Build a micro-vm
Create a micro-vm from a Dockerfile. Use
build command with a directory containing a Dockerfile.
$ slim build images/alpine3.8-simple
This will add a bootable iso in the slim registry. See example Dockerfile.
Listing micro-vm images
See a list of micro-vm images on your machine.
$ slim images
Running a micro-vm
Provision a new instance of the given micro-vm image as a virtual machine (using virtualbox). Use
-p kvm or
-p hyperkit to switch providers.
Using hyperkit (available on macOS).
$ slim run micro1 alpine3.8-simple -p hyperkit
Using virtualbox (default).
$ slim run micro2 alpine3.8-simple
VirtualBox will run the micro-vm instance as an attached iso loaded into a cdrom, and boot up the iso in seconds.
For convenience, a ssh connection command is provided at the end of the command, allowing easy access into the machine:
ssh -i /Users/cjparnin/.slim/baker_rsa email@example.com -p 2008 -o StrictHostKeyChecking=no
Simply clone this repo and run.
npm install npm link
Unfortunately, due to the experimental nature, there are a few system dependencies you must also install:
- docker, for building and extracting the kernel and filesystem.
brew install cdrtools, for building the micro-vm iso.
To boot and run the image, you also need a hypervisor:
For kvm, you can install the following dependencies for ubuntu:
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker mkisofs