How to run a macOS virtual machine on Apple Silicon
A macOS virtual machine is a separate Mac system running in a window. It is the safest way to try betas, test apps and experiment without touching your main Mac.
Why run macOS in a virtual machine?
- Test apps on a clean system or a different macOS version
- Try macOS betas without risking your main system
- Keep a separate environment for experiments, training or demos
- Return to a known state with checkpoints
What you need
- A Mac with Apple Silicon and macOS 14 or later
- A compatible macOS restore image (IPSW)
- At least 8 GB of memory and about 60 GB of free disk space for each virtual machine
Step by step with MacDock
- Install MacDockDownload MacDock from the Mac App Store.
- Choose an IPSWSelect a local IPSW file or let MacDock download a compatible restore image through Apple's framework.
- Set resourcesChoose CPU cores, memory, disk size and NAT networking.
- Install macOSComplete macOS setup in the new environment.
- Save a checkpointAfter a clean shutdown, save a checkpoint so you can return to this state later.
Limits to know
- Apple allows up to two macOS virtual machines running at the same time on one Mac.
- Some Apple services and hardware-dependent features are unavailable in virtual machines.
- macOS versions released before Apple Silicon support cannot run.
- Follow Apple's macOS license terms.
Frequently asked questions
Is it legal to run macOS in a virtual machine?
Apple's macOS license allows running additional copies of macOS in virtual machines on Apple-branded hardware, within the limits of the license.
Where do I get a macOS IPSW?
MacDock can download a compatible restore image through Apple's framework, or you can choose an IPSW file you already have.
Do checkpoints replace Time Machine?
No. Checkpoints save the virtual machine state; keep independent backups of important data.
MacDock
MacDock creates and runs local macOS virtual machines on Apple Silicon. Try new software, macOS versions and risky settings in a separate system — and return to a saved checkpoint when you are done.