MACVZ
This project is inspired by and a rewrite of lima-vm.
The major difference is macvz uses macOS new Virtualization API instead of QEMU for spinning up VM's.
Requirements
- Higher or equal to macOS monterey (12.2)
- Golang
Getting Started
Installation via Homebrew
- Run
brew install mac-vz/tap/macvz
to install macvz
Installation via source
- Run
make all
to compile and build binary
- Run
make install
to install the binary to /usr/local
Using macvz as a alternate for Docker Desktop
To start a Docker VM, run the following command
macvz start https://raw.githubusercontent.com/mac-vz/macvz/main/examples/docker.yaml
Execute the following command in macOS host to update docker.sock location
export DOCKER_HOST=unix://${HOME}/.macvz/docker/sock/docker.sock
That's it !!
Other macvz commands
To get shell access to a running VM,
macvz shell docker
To stop a running VM,
macvz stop docker
Features
- Ability to start, stop and shell access
- Filesystem mounting using virtfs (See the performance report below)
- Automatic Port forwarding
- Custom DNS Resolution (like host.docker.internal)
Planned
- Support for commands like list, delete, pause, resume
- Support for different linux distros
The following table contains result summary of some different workloads tested against macvz and colima
Workload |
Summary |
macvz |
colima |
Sequential Reads |
macvz handles 8x higher operations |
620K |
77K |
Random Reads |
macvz handles 3x higher operations |
82K |
25K |
Random Reads/Writes |
macvz handles 3x higher operations |
37K/12K |
14K/4K |
Sequential writes |
macvz performs almost equally |
37K |
38K |
Random writes |
macvz performs almost equally |
22K |
30K |
Summary for Bandwidth (Maximum amount of data transmitted)
Workload |
Summary |
macvz |
colima |
Sequential Reads |
macvz handles 8x more data |
2500MB |
306MB |
Random Reads |
macvz handles 3x more data |
320MB |
98MB |
Random Reads/Writes |
macvz handles 3x more data |
140MB/50MB |
60MB/20MB |
Sequential writes |
macvz performs almost equally |
145MB |
150MB |
Random writes |
macvz performs almost equally |
90MB |
110MB |
Check out Wiki page Why use virtualization framework for detailed information
Project Status
⚠️ The project is still in early stage development and may introduce breaking changes.