VMKit
Spin up Linux VMs with QEMU.
In the above image: Docker running on ARM64 Ubuntu Virtual Machine.
Requirements
- Linux, macOS or Windows (needs testing) host OS.
- QEMU installed and available in the image, you can install it with homebrew or your package manager of choice. VMKit uses
qemu-img
binary, qemu-system-aarch64
binary on ARM64 and qemu-system-x86_64
binary on AMD64.
Getting started
Install VMKit
The only way for now is to have a working Go environment and install VMKit by running this command:
go install github.com/alessiodionisi/vmkit@latest
Create your first vitual machine
Create a Debian 12 (Bookworm) virtual machine with 4 CPUs, 4096 mebibytes of ram and 20 GB of disk by running this command:
vmkit run debian12 -i debian:bookworm -c 4 -m 4096 -d 20
Run a command in the virtual machine
Run uname -a
inside the virtual machine by running this command:
vmkit exec debian12 -- uname -a
Connect to the virtual machine via SSH
You can get SSH parameters by running this command:
vmkit ssh debian12
On Unix systems you can quickly connect via SSH by running this command:
$(vmkit ssh debian12 --command)
Commands
Create a virtual machines (vmkit run
)
With vmkit run
you can create and start a new virtual machine.
VMKit will automatically create a pair of SSH keys and configure the chosen system via cloud-init
. If not specified, a forward to guest port 22 will be created using a free port. This will be used to access the virtual machine via SSH.
Example:
vmkit run debian12 -i debian:bookworm -c 4 -m 4096 -d 20
Available options:
-c
, --cpu
number of cpu(s) (example: -c 4
)
-d
, --disk-size
disk size in gigabytes (GB) (example: -d 20
)
-i
, --image
image to use (example: -i debian:bookworm
)
-m
, --memory
ram in mebibytes (MiB) (example: -m 4096
)
-p
, --port-forward
forward host port to the virtual machine (example: -p 8080-80
, -p [host]-[guest]
)
Remove a virtual machine (vmkit remove|rm
)
With vmkit remove
or vmkit rm
you can remove a virtual machine.
Example:
vmkit remove debian12
Start a virtual machine (vmkit start
)
With vmkit start
you can start a virtual machine.
Example:
vmkit start debian12
Stop a virtual machine (vmkit stop
)
With vmkit stop
you can stop a virtual machine.
Example:
vmkit stop debian12
Contributing
Requirements
- Go installed and available in the system.
- Task installed and available in the system.