Getting SQL Server 2025 RTM Running in Containers on macOS

SQL Server 2025 RTM is here, and if you’re running Docker on macOS, you might have hit a wall trying to get it running. Here’s what happened when I tried spinning up the latest container image and how I worked around it.

The Problem

I was excited to test out SQL Server 2025 RTM in a container on my Mac, so I pulled up my trusty Docker command:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2025-latest

I thought the container started, but when I checked the logs, I saw this:

SQL Server 2025 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
assertion failed [x86_avx_state_ptr->xsave_header.xfeatures == kSupportedXFeatureBits]: 
(ThreadContextSignals.cpp:414 rt_sigreturn)

No SQL Server startup. Just an assertion failure about AVX state and the container dies.

What’s Actually Happening

SQL Server 2025 RTM requires AVX (Advanced Vector Extensions) CPU instructions. As you can see in the output above it’s trying to read the capabilites of the CPU and it just crashes. The problem is that Docker Desktop on macOS, specifically on Apple Silicon Macs running x86_64 containers via Rosetta 2, doesn’t properly support AVX instructions when emulating x86_64 architecture.

Here’s my docker config, I am running the latest and greated Docker Desktop and Engine with the following configuration:

docker version
Client:
 Version:           28.5.2
 API version:       1.51
 Go version:        go1.25.3
 Git commit:        ecc6942
 Built:             Wed Nov  5 14:42:30 2025
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.52.0 (210994)
 Engine:
  Version:          29.0.1
  API version:      1.52 (minimum version 1.44)
  Go version:       go1.25.4
  Git commit:       198b5e3
  Built:            Fri Nov 14 16:18:20 2025
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          v2.1.5
  GitCommit:        fcd43222d6b07379a4be9786bda52438f0dd16a1
 runc:
  Version:          1.3.3
  GitCommit:        v1.3.3-0-gd842d771
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

So as of today, there’s no AVX emulation of Docker Desktop/Engine. I’m guessing that at some time in the future this will change.

The Solution: OrbStack

Enter OrbStack, a lightweight alternative to Docker Desktop for macOS. One of the key differences is that OrbStack has better x86_64 emulation support, including AVX instructions. OrbStack is a drop-in replacement for Docker and you can use the same exact CLI commands. So you don’t need to learn new commands or install different tools. You simply switch your Docker context and keep using the same docker commands you’re familiar with.

Here’s what my Docker contexts look like:

docker context ls
NAME            DESCRIPTION                               DOCKER ENDPOINT
default         Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
desktop-linux   Docker Desktop                            unix:///Users/anocentino/.docker/run/docker.sock
orbstack *      OrbStack                                  unix:///Users/anocentino/.orbstack/run/docker.sock

To switch to OrbStack, I simply ran:

docker context use orbstack
orbstack
Current context is now "orbstack"

After switching contexts, you can see OrbStack is now active and using the Docker Engine - Community rather than Docker Desktop:

docker version
Client:
 Version:           28.5.2
 API version:       1.51
 Go version:        go1.25.3
 Git commit:        ecc6942
 Built:             Wed Nov  5 14:42:30 2025
 OS/Arch:           darwin/arm64
 Context:           orbstack

Server: Docker Engine - Community
 Engine:
  Version:          28.5.2
  API version:      1.51 (minimum version 1.24)
  Go version:       go1.24.9
  Git commit:       89c5e8f
  Built:            Wed Nov  5 14:43:35 2025
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          v2.2.0
  GitCommit:        1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc:
  Version:          1.3.3
  GitCommit:        d842d7719497cc3b774fd71620278ac9e17710e0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Then I ran the exact same command as before, but pointing at Orbstack:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2025-latest

This time, the logs showed what I wanted to see:

SQL Server 2025 will run as non-root by default.
This container is running as user mssql.
2025-11-26 14:56:10.11 Server      Microsoft SQL Server 2025 (RTM) - 17.0.1000.7 (X64) 
	Oct 21 2025 12:05:57 
	Copyright (C) 2025 Microsoft Corporation
	Enterprise Developer Edition (64-bit) on Linux (Ubuntu 22.04.5 LTS) <X64>
...
2025-11-26 14:56:12.95 spid48s     SQL Server is now ready for client connections.

Success! SQL Server 2025 RTM started up without issues.

According to the OrbStack release notes, they specifically added support for AVX operations in their emulation layer. This is exactly what SQL Server 2025 needs to run properly on Apple Silicon Macs. Until Microsoft releases an ARM64 version of SQL Server for Linux (if they ever do), OrbStack’s improved emulation is your best bet for running SQL Server 2025 containers on macOS.

Testing the New Features

Once I had SQL Server 2025 running in OrbStack, I went ahead and tested out some of the new vector database features. I created tables with the new VECTOR datatype and built vector indexes on them. Both worked without any issues. The functionality is there and operational, which is great for testing and development work.

I still need to do some performance testing to see how well the vector operations perform under OrbStack’s emulation, but for basic feature validation and development, it’s working perfectly fine.

You can download OrbStack from orbstack.dev and give it a try.