Built on the great work from foxlet
Runs a macOS image on QEMU in a docker container, with VNC, SSH and SPICE access on alpine linux
- Docker
- A MacOS
.qcow2
image (You can build a new one using foxlet's macOS-Simple-KVM tool) - A
BaseSystem.img
file (Convert it yourself from the .dmg, or use foxlet's macOS-Simple-KVM tool) - The
ESP.qcow2
file from macOS-Simple-KVM tool - the
/firmware
folder from foxlet's macOS-Simple-KVM tool - KVM Capable Linux host with KVM enabled
- (This probably won't run on Windows or Mac docker due to the docker shim using the kvm from the host system already)
- Clone the macOS-Simple-KVM tool:
git clone https://github.com/foxlet/macOS-Simple-KVM.git
- Clone this repo
- Copy the
firmware
directory from the macOS-Simple-KVM tool and your .qcow2 image into this repository - Copy/Move your
BaseSystem.img
andMyDisk.qcow2
image into this directory - Run
docker-compose up
VNC will be available on localhost port 5900
SSH will be available on localhost port 2222 (If turned on in the Settings > Sharing > Remote Access
in your macOS image)
SPICE (along with system audio) will be available on localhost port 5930 (remote-viewer spice://localhost:5930
)
docker build . -t macos-docker
To run, mount the following volumes:
- ./MyDisk.qcow2:/macostools/MyDisk.qcow2
- ./BaseSystem.img:/macostools/BaseSystem.img
- ./ESP.qcow2:/macostools/ESP.qcow2
- ./firmware:/macostools/firmware
And set the following environment variables:
- SYSTEM_DISK=MyDisk.qcow2
- HEADLESS=1
- MEM=2G
- CPUS=4
- SPICE=1
Refer to the macOS-Simple-KVM repo for more info on customization
The base image built by the macOS-Simple-KVM
tool has UUIDs that have been flagged by apple from too many setups, and so you likely won't be able to # to an apple account until you change them.
I recommend clover-configurator to modify the system to have new UUIDs before attempting to # to your apple account.
You can also use the same tool to modify the default resolution of your macOS image