隨著 Apple Silicon(M1、M2、M3、M4)筆電普及,越來越多開發者在 Mac 上執行 Docker,尤其是企業常用的 Microsoft SQL Server(mssql)container。
但許多人在 ARM 架構下安裝 mssql server 時,常常遇到平台不符(platform mismatch)警告、Container 直接啟動失敗等狀況。
這篇將深入解析:
在 dockerhub mssql-server 中,它的架構都是amd64的,但是 Apple Silicon 卻是 arm64
以下使用 colima 及 podman 來安裝 mssql-server 並進行測試。
在 M4 上直接使用 colima 來執行 mssql (請調整密碼),
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=p@ssw0rd" \-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2025-latest
會發生以下的警告訊息:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
然後 docker 就結束了,mssql server 也沒有啟動成功。
這是因為 Colima VM 預設是 arm64 架構,直接執行 amd64 image 會需要 QEMU 虛擬化,若 QEMU 沒安裝或沒正確啟用,container 會啟動失敗。
建議重建 Colima VM 並指定 x86_64 架構,這樣所有 amd64 image 都可直接啟動且較為穩定。
指令如下:
colima stop
colima delete
colima start --arch x86_64
如果出現 "FATA[0000] error starting vm: error at ‘creating and starting’: qemu is required to emulate x86_64: qemu-img not found, run ‘brew install qemu’ to install" 的錯誤訊息,這是因為 qemu 沒有安裝,我們可以透過 brew 來安裝 qemu:
brew install qemu
然後再啟動 colima:
colima start --arch x86_64
下次要啟動只要執行 colima start
即可。
執行colima status
可以發現,目前已經是x86_64架構,如下:
INFO[0000] colima is running using macOS Virtualization.Framework
INFO[0000] arch: x86_64
INFO[0000] runtime: docker
INFO[0000] mountType: sshfs
INFO[0000] socket: unix:///Users/youruser/.colima/default/docker.sock
再來使用 docker 執行 mssql-server ,就可以正常啟動了.
podman 執行podman machine start
後,執行podman info
可以發現它的架構是linux/arm64, 如下:
version:
APIVersion: 5.5.0
BuildOrigin: 'Copr: packit/containers-podman-26126'
Built: 1747094400
BuiltTime: Tue May 13 08:00:00 2025
GitCommit: 0dbcb51477ee7ab8d3b47d30facf71fc38bb0c98
GoVersion: go1.23.8
Os: linux
OsArch: linux/arm64
Version: 5.5.0
所以透過podman來執行 mssql-server (請調整密碼):
podman run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=p@ssw0rd" \-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2025-latest
會出現以下的警告訊息:
WARNING: image platform (linux/amd64) does not match the expected platform (linux/arm64)
但是 mssql-server 還是可以正常啟動(QEMU 自動模擬),執行podman ps
可驗證服務已啟動
podman 無需特別處理架構,自動啟動 QEMU,可直接跑 amd64 image。
colima 需明確指定 VM 架構為 x86_64 並重建 VM,否則容易失敗。
整體而言,Podman 對於 Apple Silicon (M1/M2/M3/M4) 用戶體驗更方便!
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
評論 1
哈哈,原來如此,我一開始就用 podman ,所以沒有注意到這個微妙的差異,學習了,感謝 RM 大大。