Linux distribution

CentOS Stream VMs on Apple Silicon Macs

Run mvz create centos dev and MacVisor downloads the CentOS Stream 10 GenericCloud image for ARM64 from cloud.centos.org, checks it, and makes a VM with your account and SSH keys. The image ships Podman, and Docker, containerd and k3s install on request.

  • Apple Silicon (M1 or later)
  • macOS 27 on the Mac
  • CentOS Stream 10, ARM64

30 days free, no key or payment details. Apple Silicon with macOS 27.

A stylised MacVisor window with a CentOS Stream VM's terminal and a newer template build arriving in the sidebar.

Create a CentOS Stream VM

In the app, choose New VM → Linux → Cloud Image → CentOS Stream 10. From Terminal:

mvz create centos dev                       # CentOS Stream 10 (aliases: centos, centos-stream)
mvz shell dev --start

The image is CentOS-Stream-GenericCloud-10-latest for aarch64 from cloud.centos.org, checked against the CHECKSUM file beside it.

What you get

Your account has your Mac user name and UID, your SSH keys, bash and sudo without a password. The MacVisor Agent, Rosetta and automatic port forwarding are set up on the first boot.

CentOS Stream sits between Fedora and Red Hat Enterprise Linux: changes land in Stream before they reach a RHEL minor release. A Stream VM shows you what's coming to RHEL 10 and its rebuilds, so you can test your software against it early.

A moving target, kept still per VM

Stream changes more often than a point release. MacVisor keeps that under control:

  • The first VM makes a template from the build current that day. Later VMs are linked clones of the same template, so they all start from identical bits.
  • mvz images pull centos fetches the newest build for VMs you make after it. Existing VMs keep the build they started from.
  • Take a snapshot before a dnf update you're unsure of, and revert if it breaks something:
mvz snapshots take dev --name before-update
mvz exec dev -- sudo dnf -y update

Containers

All four runtimes work. Podman is in the image already. With --runtime podman, MacVisor turns on the rootless podman.socket for your account and forwards it to the Mac as the macvisor-<vm> docker context. --runtime docker installs Docker CE from Docker's RHEL repository, and --runtime containerd a rootless nerdctl setup.

mvz create centos pods --runtime podman
mvz create centos k8s --runtime k3s --memory 8

Quirks

  • SELinux enforcing, as the image ships it. MacVisor's setup works within the policy.
  • XFS root. The disk grows with mvz set <vm> --disk <GiB> and never shrinks.
  • One release. Only Stream 10 is in the catalogue. Stream 9 installs from its ARM64 ISO, or from its cloud image added with mvz images add.

FAQ

Common questions

More in the documentation and known limitations.

Which CentOS versions are in the MacVisor catalogue?

CentOS Stream 10 only, as centos-stream-10 with the aliases centos and centos-stream. CentOS Linux, the older rebuild of RHEL, has ended; for a rebuild, use Rocky Linux or AlmaLinux.

Is Podman installed in a CentOS Stream VM?

Yes. The CentOS Stream image already includes Podman, so it is there with no runtime chosen. Choose --runtime podman to have MacVisor also turn on Podman's Docker-compatible API and forward it to the Mac.

How do I get a newer CentOS Stream build?

Run mvz images pull centos. The catalogue tracks CentOS's latest GenericCloud build, so the pull fetches a newer one for VMs you make afterwards. VMs you already have keep using the build they were made from.

Can I run Docker on CentOS Stream in MacVisor?

Yes. With --runtime docker, MacVisor adds Docker's repository for RHEL and installs docker-ce with Buildx and Compose, and adds your account to the docker group.

Run your Mac like a virtualization host.

macOS, Windows 11, Linux and FreeBSD VMs that keep running with the app closed, with snapshots, networks, backups and the mvz command line.