GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
字體大小: +
3 分鐘閱讀時間 (552 個字)

Apple Mac M4 上用 Docker 跑 SQL Server?使用 Colima、Podman 相容性解析

Apple Mac M4 上用 Docker 跑 SQL Server?使用 Colima、Podman 相容性解析 M4 + DOCKER + MSSQL

隨著 Apple Silicon(M1、M2、M3、M4)筆電普及,越來越多開發者在 Mac 上執行 Docker,尤其是企業常用的 Microsoft SQL Server(mssql)container。
許多人在 ARM 架構下安裝 mssql server 時,常常遇到平台不符(platform mismatch)警告、Container 直接啟動失敗等狀況。

這篇將深入解析:

  • Colima、Podman 在 Apple Silicon 上跑 amd64 image 的差異
  • QEMU 模擬與 VM 架構調整
  • 最佳開發實務建議

在 dockerhub mssql-server 中,它的架構都是amd64的,但是 Apple Silicon 卻是 arm64 

以下使用 colima 及 podman 來安裝 mssql-server 並進行測試。

使用 colima

在 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 執行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) 用戶體驗更方便!

參考資源

colima
podman

  • 註: 感謝同事 HiHi Paul 的測試與幫助!
×
Stay Informed

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.

SQL Server 2025 實戰:資料庫內建 AI 向量語義搜尋與 RAG 教學(以 Adven...
打造資料不出門的 AI 開發體驗:建構企業內網的 AI 開發助理 - Part 2

相關文章

 

評論 1

Paul Huang (黃孝仁) 於 2025年6月17日 14:28, 星期二

哈哈,原來如此,我一開始就用 podman ,所以沒有注意到這個微妙的差異,學習了,感謝 RM 大大。

哈哈,原來如此,我一開始就用 podman ,所以沒有注意到這個微妙的差異,學習了,感謝 RM 大大。
已經注冊了? 這裡登入
2025年10月11日, 星期六

Captcha 圖像