Apple Silicon Mac 用 Docker 跑 SQL Server 2025 避開 AVX crash
在 M1 到 M4 Mac 上跑 SQL Server 2025 container 時,先不要把 2025-latest 當作穩定答案;更穩的做法是指定已驗證的 CU tag,例如 mcr.microsoft.com/mssql/server:2025-CU5-ubuntu-24.04 ,搭配 --platform linux/amd64 ,並在 Docker Desktop 使用 Apple Virtualization framework 與 Rosetta amd64 emulation。
問題症狀
在 Apple Silicon Mac 使用 SQL Server 2025 Docker image 時,container 可能反覆重啟,log 會看到:
第一段 non-root 與 user mssql 是 SQL Server 2025 container 的正常行為;真正讓 SQL Server 起不來的是後面的 assertion failed。
這類問題常見於:
Apple Silicon Mac,例如 M1、M2、M3、M4。
Docker Desktop 使用 amd64 emulation 跑
mcr.microsoft.com/mssql/server。本機仍有舊的
2025-latestimage cache,或使用早期 SQL Server 2025 RTM / GA tag。
先講結論
本機開發可先用固定 CU tag 跑 SQL Server 2025:
成功後用 log 判斷是否 ready:
看到類似這段才算 SQL Server 可以接受 client connection:
再用 sqlcmd 驗證版本:
本次實測成功版本為:
Docker Desktop 設定
在 Apple Silicon 上先確認 Docker Desktop:
安裝 Rosetta。
softwareupdate --install-rosetta開啟 Docker Desktop。
到 。
Virtual Machine Manager 選 Apple Virtualization framework。
勾選 Use Rosetta for x86_64/amd64 emulation on Apple Silicon。
Apply and Restart。
Docker 文件說明,Rosetta amd64 emulation 選項只有在選 Apple Virtualization framework 時可用;Docker VMM 目前不支援 Rosetta,amd64 emulation 會比較慢。
Docker Compose 範例
如果用 Docker Compose,重點一樣是固定 CU tag、指定 linux/amd64 ,並用 pull_policy: always 避免吃到舊 cache。
啟動前先 pull:
為什麼不要只靠 2025-latest
latest 是會移動的 tag,但本機 Docker 可能已經有舊 digest 的 2025-latest image。這時 compose 或 docker run 看起來使用的是 2025-latest ,實際上可能仍在跑舊 RTM / GA image。
先確認本機 image:
如果要清掉舊 cache:
清完後再 pull 固定 CU tag:
官方支援邊界
Microsoft 官方文件仍說 SQL Server container image 只支援 Intel / AMD x86-64 CPU 的 Linux host;Rosetta 2、Prism、QEMU 這類 emulation 或 translation environment 不屬於已測試或支援的環境。
所以在 Apple Silicon Mac 上要把它當成本機開發 workaround,而不是正式環境架構。需要穩定測試或正式服務時,優先放到:
x86-64 Linux VM 或實體機
Azure VM
Azure SQL
其他正式支援 SQL Server 的 x86-64 環境
如果 CU5 還是失敗
可以依序檢查:
確認實際 image:
docker ps -a和docker image inspect是否真的指到2025-CU5-ubuntu-24.04。確認平台:
docker run是否有--platform linux/amd64,或 compose 中是否有platform: linux/amd64。確認 Docker Desktop VMM :是否使用 Apple Virtualization framework,而不是 Docker VMM。
確認 Rosetta :Docker Desktop 是否勾選
Use Rosetta for x86_64/amd64 emulation on Apple Silicon。換執行環境 :若 Docker Desktop 仍失敗,可測 OrbStack;若仍不穩,本機開發先退回
mcr.microsoft.com/mssql/server:2022-latest。
常見替代方案排序:
SQL Server 2025 固定 CU tag,例如
2025-CU5-ubuntu-24.04或更新的固定 CU tag。OrbStack 跑同一個
linux/amd64image。開發階段暫時使用 SQL Server 2022。
正式或穩定測試環境改放 x86-64 Linux / Azure。