Running macOS using Docker... on a Synology Nas
Docker lets you run macOS in the most unusual places, like a Synology NAS, a computer that lacks a dedicated HDMI output and uses an AMD chipset.
Why Docker and Not Synology's VM Manager?
Synology provides its own virtual machine software, but it doesn't natively support macOS for two reasons:
- The legal restrictions mentioned above
- Until recently, it emulated an outdated chipset lacking USB 3.0 and PCIe support
While Synology has updated their virtualization software to support the newer Q35 chipset for QEMU, I have not heard of anyone successfully installing macOS to run via it's virtual machine software.
What is Docker?
For those unfamiliar, Docker is a containerization platform that uses packages and small containers to run services. It's a lightweight form of virtualization popular among developers. The beauty of this approach is that someone has already created a Docker container for macOS, making our experiment possible.
Setting Up macOS Ventura on Synology
Prerequisites
- A Synology NAS (I'm using a DS923+ with 32GB RAM)
- Container Manager (Docker) installed on your Synology
- At least 8GB of RAM to allocate to the virtual machine
Installation Steps
- Open Container Manager on your Synology
- Click on Registry and search for "macOS"
- Locate "docker/macOS" and download the image
- Click Project, then Create
- Select your storage path
- Name your project (e.g., "ventura" or "sequoia")
- Create a Docker compose YAML file with the following configuration:
version: '3'
services:
macos:
container_name: ventura # Or "sequoia" if using macOS Sequoia
image: docker/macos
environment:
- MACOS_VERSION=ventura # Change to "sequoia" for macOS Sequoia
mem_limit: 8G # Allocates 8GB RAM, default is 4GB if not specified
ports:
- "5999:5999" # VNC port for accessing the virtual machine
Once configured, access your virtualized macOS through a web browser using the IP address of your Synology followed by the port number specified in your YAML file (e.g., http://192.168.1.100:5999
).
Performance and Usability
The DS923+ with its dual-core AMD Ryzen R600 isn't a performance monster, but it's surprisingly capable when running macOS Ventura:
- It performed more than twice as fast as a Mac Mini 2010 in Geekbench 6 tests
- The Weather app, which typically has graphical glitches on unsupported hardware, renders properly
- Apple Maps, however, appears almost completely blank
- Web browsing works well with Firefox (Safari experienced rendering issues)
In my testing, the About This Mac page reported the system as an iMac Pro with a 2.6 GHz i3 processor, 7MB of VRAM, and 8GB of RAM (matching my allocation).
macOS Sequoia (macOS 15) Status
As of this writing, macOS 15 Sequoia support is still problematic in this setup:
- The installer background doesn't load properly
- Performance is painfully slow
- For now, older macOS versions like Ventura offer a better experience
Running on Ubuntu
The same approach works on Ubuntu (and potentially other Linux distributions) with a few additional terminal commands:
# Install Docker
sudo apt update
sudo apt install docker.io
# Start Docker
sudo systemctl start docker
# Add your user to the Docker group
sudo usermod -aG docker $USER
# Navigate to your Docker compose file directory
cd ~/Documents/docker-macos
# Run the container
docker-compose up
When running on more powerful hardware (like a Mini PC with an i9-12900H), performance can rival that of a Mac Mini M1, even without GPU acceleration.
Conclusion
While macOS is usable through this Docker method on a Synology NAS, it's still a bit of a novelty. For serious VM work on NAS hardware, a Linux distro would likely be a better choice. That said, it's an impressive technical achievement and demonstrates the flexibility of both Docker and modern NAS systems.
As dockerized macOS continues to develop, we may see improved performance and compatibility with newer macOS versions. For now, it's a fun experiment for the technically curious.
Note: Docker containers can consume significant storage space. Remember to clean up unused images and containers when you want to free up space.