1. 环境准备
- 确认 Docker Desktop 配置
确保已安装 Docker Desktop for Mac (Apple Silicon)(版本 ≥ 4.15.0)。开启 Rosetta(默认开启):
打开 Docker Desktop → Settings → General → Virtual Machine Options → Choose Virtual Machine Manager,勾选 Use Rosetta for x86/amd64 emulation on Apple Silicon。
- 验证架构
uname -m # 应输出 "arm64"
2. 拉取并运行 SQL Server 容器
使用官方 ARM64 镜像(推荐),Microsoft 已提供支持 ARM64 的 SQL Server 2022 镜像。
命令如下:
docker run -e "ACCEPT_EULA=Y" \
-e "MSSQL_SA_PASSWORD=Met@20250605" \
-p 1433:1433 \
-v sqlserver-data:/var/opt/mssql \
--name sqlserver \
--privileged \
--platform linux/arm64/v8 \
mcr.microsoft.com/azure-sql-edge
-e “ACCEPT_EULA=Y”
接受 SQL Server 的最终用户许可协议(EULA)。必须设置为 Y 才能启动容器,否则会报错退出。-e “MSSQL_SA_PASSWORD=Met@20250605”
设置系统管理员(SA)账户的密码。密码必须符合 SQL Server 的复杂度要求:- 至少 8 个字符
- 包含大写字母、小写字母、数字和特殊字符
- 不包含用户名或简单词汇
-p 1433:1433
将宿主机的 TCP 端口 1433 映射到容器内的 1433 端口,使外部应用可以通过 localhost:1433 访问 SQL Server。- 左侧 1433:宿主机端口(可修改为其他端口,如 1434:1433)
- 右侧 1433:容器内 SQL Server 默认监听端口
-v sqlserver-data:/var/opt/mssql
创建一个名为 sqlserver-data 的 Docker 数据卷,并挂载到容器内的 /var/opt/mssql 目录。
这确保了:- 数据库文件在容器重启后不会丢失
- 避免容器内文件系统限制导致的性能问题
–name sqlserver
为容器指定名称 sqlserver,方便后续管理(如 docker start sqlserver、docker logs sqlserver)。–platform linux/arm64/v8
显式指定容器使用 ARM64 架构的镜像。在 macOS M4(ARM 芯片)上必须设置,否则 Docker 可能尝试运行 AMD64 镜像并导致兼容性问题。–privileged
赋予容器完全访问主机设备的权限,相当于容器内的 root 用户。
注意:- 仅用于调试,生产环境不应使用
- 可解决部分权限相关问题(如 /proc 目录访问)
mcr.microsoft.com/azure-sql-edge
指定使用 Azure SQL Edge 的官方 Docker 镜像。这是一个轻量级版本的 SQL Server,专为 IoT 和边缘计算优化,支持 ARM64 架构。
运行截图: